ไฟล์“ Excel” (.xlsx) ที่มีหลายแผ่นในแผ่นแยก [n] .xlsx เป็นอย่างไร


16

ฉันคิดว่าชื่อกล่าวมันทั้งหมดสำหรับคำถามนี้ แต่จะอธิบายเพิ่มเติมเล็กน้อย:

ฉันมีไฟล์. xlsx ซึ่งบรรจุแผ่นงานเพียงไม่กี่แผ่น ฉันต้องการส่งออกแผ่นงานทั้งหมดเป็นไฟล์. xlsx แยกกัน ไม่จำเป็นต้องตั้งชื่อโดยอัตโนมัติ excel มีฟังก์ชันในการส่งออกแผ่นงานไปยังไฟล์แยกกันหรือไม่?

คำตอบ:


16

มันไม่ใช่คุณสมบัติในตัว

อย่างไรก็ตามหากคุณเรียกใช้รหัสนี้ควรทำงาน

Sub SaveSheets()
    Dim strPath As String
    Dim ws As Worksheet

    Application.ScreenUpdating = False

    strPath = ActiveWorkbook.Path & "\"
    For Each ws In ThisWorkbook.Sheets
        ws.Copy
        'Use this line if you want to break any links:
        BreakLinks Workbooks(Workbooks.Count)
        Workbooks(Workbooks.Count).Close True, strPath & ws.Name & ".xlsx"
    Next

    Application.ScreenUpdating = True
End Sub

Sub BreakLinks(wb As Workbook)
    Dim lnk As Variant
    For Each lnk In wb.LinkSources(xlExcelLinks)
        wb.BreakLink lnk, xlLinkTypeExcelLinks
    Next
End Sub

ในการรันโค้ดให้ทำดังต่อไปนี้:

  1. เปิดเครื่องมือแก้ไข VBA ( Alt+ F11)
  2. ในต้นไม้ที่มุมซ้ายบนคลิกขวาบนสมุดงานของคุณและแทรกโมดูลใหม่
  3. คัดลอกรหัสข้างต้นลงในโมดูลนี้
  4. ปิดตัวแก้ไข VBA
  5. ใน Excel กดAlt+ F8เพื่อเรียกใช้แมโครและเลือกSaveSheets

หรือดูฉันจะเพิ่ม VBA ใน MS Office ได้อย่างไร


ขอบคุณ! สิ่งที่เกี่ยวกับการย้อนกลับหรือไม่ - เพื่อนำมันกลับมารวมกัน? เห็นได้ชัดว่าไฟล์ excel นี้มี "ลิงก์" (ฉันไม่ได้ใช้คุณสมบัตินี้มาก่อน) และหลังจากการแยก Excel ไม่พบลิงก์ (มันกำลังมองหาแผ่นงานแรก); มีอยู่เพื่อแยกพวกเขาและปรับปรุงการเชื่อมโยงในเวลาเดียวกัน / หรือเพียงแค่ปรับปรุงการเชื่อมโยง?
eichoa3I

1
คำถามคือวิธีที่คุณต้องการจัดการลิงก์ คุณสามารถแทนที่ค่าเหล่านั้นได้อย่างง่ายดายด้วยการแทรกWorkbooks(Workbooks.Count).BreakLinksหลังจากws.Copy...
Peter Albert

หลังจากที่ฉันเปิดเวิร์กบุ๊กหนึ่งหน้าต่างป๊อปอัปใน Excel จะแจ้งให้ฉันแก้ไขลิงก์ ฉันคลิกผ่านกล่องโต้ตอบนี้และตอนนี้ลิงค์ทำงานสำหรับไฟล์ทั้งหมด ฉันสงสัยว่าถ้าสิ่งนี้ถูกบันทึกไว้ในไฟล์หรือในเครื่อง ...
eichoa3I

เมื่อคุณพูดว่าแทนที่ด้วยค่าด้วย Workbooks (Workbooks.Coun) คุณหมายถึงลิงค์ที่ถูกลบหรือไม่ ... ฉันคิดว่าวิธีที่ดีที่สุดในการจัดการกับพวกเขาก็คือทำไปกับพวกเขา (เช่นเมื่อผู้ใช้เปิดไฟล์ excel ที่แยกออกตอนนี้พวกเขาไม่เห็นคำเตือนเกี่ยวกับลิงก์ที่เสียหาย)
eichoa3I

ขออภัยลองWorkbooks(Workbooks.Count).BreakLink- โดยไม่sสิ้นสุด
Peter Albert

11
  1. เมื่อคุณคลิกขวาที่แท็บของแผ่นงาน Excel คุณสามารถเลือกย้ายหรือคัดลอก ...

    ป้อนคำอธิบายรูปภาพที่นี่

  2. ในกล่องโต้ตอบผลลัพธ์คุณสามารถเลือกสมุดงานเป้าหมายได้ เลือก(หนังสือใหม่)

    ป้อนคำอธิบายรูปภาพที่นี่

  3. คลิกตกลง แผ่นงานของคุณอยู่ในเอกสารใหม่แล้ว


7

ฉันพยายามแก้ปัญหาปีเตอร์อัลเบิร์และมันไม่ได้ทำงานสำหรับฉันดังนั้นฉันพบวิธีแก้ปัญหาในโพสต์นี้ (“Excel - บันทึกแผ่นงานเป็นไฟล์แยกต่างหาก”) ในไดอารี่ของคอมพิวเตอร์ geek

มันใช้งานได้ดี คุณควรเปลี่ยนชื่อแผ่นงานที่มีจุดเพื่อให้ได้ชื่อไฟล์ที่ถูกต้องพร้อม.xlsนามสกุล

Sub CreateNewWBS()
Dim wbThis As Workbook
Dim wbNew As Workbook
Dim ws As Worksheet
Dim strFilename As String

    Set wbThis = ThisWorkbook
    For Each ws In wbThis.Worksheets
        strFilename = wbThis.Path & "/" & ws.Name
        ws.Copy
        Set wbNew = ActiveWorkbook
        wbNew.SaveAs strFilename
        wbNew.Close
    Next ws
End Sub

ใช้คำแนะนำในการสร้างและเรียกใช้แมโครนี้จากโพสต์ของ Peter Albert หรือจากฉันจะเพิ่ม VBA ใน MS Office ได้อย่างไร


1
ฉันยังลองวิธีการแก้ปัญหาของ Peter Albert และมีข้อผิดพลาด "ข้อผิดพลาดรันไทม์ '13': พิมพ์ไม่ตรงกันโชคดีที่คำตอบในคำตอบนี้ใช้ได้สำหรับฉัน
Bin

ฉันจะทำให้มันเขียนทับไฟล์ที่มีอยู่ด้วยชื่อเดียวกันได้อย่างไร?
DAE

ฉันไม่ต้องการสิ่งนี้เพราะแต่ละการถ่ายโอนข้อมูลไปยังโฟลเดอร์อื่น อาจจะลองกระทู้นี้
hrvoj3e
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.