Bagaimana satu "membagi" file Excel (.xlsx) yang berisi banyak sheet menjadi sheet terpisah [n] .xlsx?

17

Saya pikir judul mengatakan itu semua untuk pertanyaan ini tetapi untuk menguraikan sedikit lebih jauh:

Saya memiliki file .xlsx yang berisi beberapa lusin lembar. Saya ingin menampilkan semua lembar itu sebagai file .xlsx terpisah. Penamaan otomatis untuk mereka tidak perlu. Apakah excel memiliki fungsi untuk mengekspor sheet ke file terpisah?

eichoa3I
sumber

Jawaban:

17

Ini bukan fitur bawaan.

Namun, jika Anda menjalankan kode ini, itu harus melakukan pekerjaan.

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

Untuk menjalankan kode, lakukan hal berikut:

  1. Buka editor VBA ( Alt+ F11)
  2. Di pohon di sudut kiri atas, klik kanan pada buku kerja Anda dan masukkan modul baru
  3. Salin kode di atas ke modul ini
  4. Tutup editor VBA
  5. Di Excel tekan Alt+ F8untuk menjalankan makro dan pilihSaveSheets

atau lihat Bagaimana cara menambahkan VBA di MS Office?

Peter Albert
sumber
Terima kasih! Bagaimana dengan kebalikannya - untuk memasangnya kembali? File excel ini ternyata berisi "tautan" (Saya belum pernah menggunakan fitur ini sebelumnya), dan setelah pemisahan Excel tidak dapat menemukan tautan (mencari lembar pertama); apakah ada jauh untuk membaginya dan memperbarui tautan pada saat yang sama / atau hanya memperbarui tautan?
eichoa3I
1
pertanyaannya adalah bagaimana Anda ingin menangani tautan. Anda dapat dengan mudah menggantinya dengan nilai dengan memasukkan Workbooks(Workbooks.Count).BreakLinkssetelah ws.Copy...
Peter Albert
Setelah saya membuka satu buku kerja, jendela sembulan di Excel meminta saya untuk memperbaiki tautan; Saya mengklik kotak dialog ini dan sekarang tautannya berfungsi untuk semua file. Saya bertanya-tanya apakah ini disimpan dalam file atau secara lokal ...
eichoa3I
Ketika Anda mengatakan menggantinya dengan nilai-nilai dengan Buku Kerja (Workbooks.Coun) .BreakLinks maksud Anda tautan dihapus, atau ...? Saya pikir cara terbaik untuk menanganinya adalah dengan menghapusnya (yaitu, ketika pengguna membuka file excel yang sekarang terpisah, mereka tidak melihat peringatan tentang tautan yang rusak).
eichoa3I
maaf, coba Workbooks(Workbooks.Count).BreakLink- tanpa sakhir
Peter Albert
11
  1. Saat Anda mengklik kanan tab lembar Excel, Anda dapat memilih Pindahkan atau Salin ...

    masukkan deskripsi gambar di sini

  2. Dalam dialog yang dihasilkan, Anda dapat memilih buku kerja target. Pilih (buku baru) .

    masukkan deskripsi gambar di sini

  3. Klik OK . Lembar Anda sekarang ada di dalam dokumen baru.

Der Hochstapler
sumber
8

Saya mencoba solusi Peter Albert dan itu tidak berhasil untuk saya, jadi saya menemukan solusi dalam posting ini ("Excel - simpan lembar kerja sebagai file terpisah") di Diary of the geek komputer .

Ini bekerja dengan baik. Anda harus mengganti nama sheet yang berisi titik untuk mendapatkan file dengan nama yang benar dengan .xlsekstensi.

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

Gunakan instruksi untuk membuat dan menjalankan makro ini dari posting Peter Albert atau dari Bagaimana cara menambahkan VBA di MS Office?

hrvoj3e
sumber
1
Saya juga mencoba solusi Peter Albert dan ada kesalahan "Run-time error'13 ': Ketik ketidakcocokan. Untungnya solusi dalam jawaban ini berfungsi untuk saya
Bin
bagaimana saya bisa menimpanya dengan file yang ada dengan nama yang sama?
DAE
Saya tidak memerlukan ini karena setiap dump masuk ke folder terpisah. Mungkin coba utas ini
hrvoj3e
Solusi Anda berhasil untuk saya :)
Muhammad Waheed