Note: The other languages of the website are Google-translated. Back to English

Bagaimana cara mengonversi banyak file Excel ke file CSV di Excel?

Di Excel, kita dapat mengonversi buku kerja ke file CSV dengan fungsi Simpan sebagai, tetapi apakah Anda tahu cara mengonversi banyak file Excel menjadi file CSV terpisah? Pada artikel ini, saya memperkenalkan kode VBA untuk mengonversi semua file Excel dalam folder menjadi file CSV di Excel.

Batch mengkonversi file Excel dari sebuah folder ke file CSV dengan VBA

Ubah lembar buku kerja menjadi file CSV terpisah dengan Kutools for Excelide bagus3


Batch mengkonversi file Excel dari sebuah folder ke file CSV dengan VBA

Di Excel, tidak ada fungsi bawaan yang dapat menyelesaikan pekerjaan ini dengan cepat kecuali VBA.

1. Aktifkan Excel, dan tekan Alt + F11 kunci terbuka Microsoft Visual Basic untuk Aplikasi jendela.

2. klik Menyisipkan > Modul untuk membuat Modul baru.

3. Salin kode di bawah ini dan tempelkan ke jendela Modul baru.

VBA: Batch mengkonversi file Excel ke CSV

Sub WorkbooksSaveAsCsvToFolder()

'UpdatebyExtendoffice20181031

Dim xObjWB As Workbook

Dim xObjWS As Worksheet

Dim xStrEFPath As String

Dim xStrEFFile As String

Dim xObjFD As FileDialog

Dim xObjSFD As FileDialog

Dim xStrSPath As String

Dim xStrCSVFName As String

Dim xS  As String

    Application.ScreenUpdating = False

    Application.EnableEvents = False

    Application.Calculation = xlCalculationManual

    Application.DisplayAlerts = False

    On Error Resume Next

Set xObjFD = Application.FileDialog(msoFileDialogFolderPicker)

    xObjFD.AllowMultiSelect = False

    xObjFD.Title = "Kutools for Excel - Select a folder which contains Excel files"

    If xObjFD.Show <> -1 Then Exit Sub

    xStrEFPath = xObjFD.SelectedItems(1) & "\"

    Set xObjSFD = Application.FileDialog(msoFileDialogFolderPicker)

 
    xObjSFD.AllowMultiSelect = False

    xObjSFD.Title = "Kutools for Excel - Select a folder to locate CSV files"

    If xObjSFD.Show <> -1 Then Exit Sub

    xStrSPath = xObjSFD.SelectedItems(1) & "\"


    xStrEFFile = Dir(xStrEFPath & "*.xls*")


    Do While xStrEFFile <> ""

       xS = xStrEFPath & xStrEFFile

        Set xObjWB = Application.Workbooks.Open(xS)

        xStrCSVFName = xStrSPath & Left(xStrEFFile, InStr(1, xStrEFFile, ".") - 1) & ".csv"

        xObjWB.SaveAs Filename:=xStrCSVFName, FileFormat:=xlCSV

        xObjWB.Close savechanges:=False

        xStrEFFile = Dir

  Loop

    Application.Calculation = xlCalculationAutomatic

    Application.EnableEvents = True

    Application.ScreenUpdating = True

    Application.DisplayAlerts = True

End Sub

4. tekan F5 kunci, pilih folder berisi file Excel yang ingin Anda konversi ke file CSV di dialog yang pertama muncul.
doc batch ke csv 1

5. klik OK, lalu di dialog popping kedua, pilih folder untuk menempatkan file CSV.
doc batch ke csv 2

6. klik OK, sekarang file Excel di folder tersebut telah diubah menjadi file CSV dan disimpan di folder lain.
doc batch ke csv 3


Ubah lembar buku kerja menjadi file CSV terpisah dengan Kutools for Excel

Seperti yang kita ketahui, kita hanya bisa mengonversi seluruh workbook menjadi satu file CSV di Excel dengan fungsi Save As-nya. Namun terkadang, Anda ingin mengonversi satu lembar menjadi file CSV, dalam hal ini, file Pisahkan Buku Kerja kegunaan Kutools untuk Excel bisa membantumu.

Kutools untuk Excel, dengan lebih dari 300 fungsi praktis, membuat pekerjaan Anda lebih mudah. 

Setelah menginstal Kutools for Excel, lakukan seperti di bawah ini:(Unduh Gratis Kutools untuk Excel Sekarang!)

1. Aktifkan buku kerja yang ingin Anda ubah lembarannya sebagai file CSV terpisah, klik Kutools Plus > Buku catatan > Pisahkan Buku Kerja.
doc batch ke csv 4

2. Dalam Pisahkan Buku Kerja dialog, centang nama lembar yang ingin Anda pisahkan (semua lembar dicentang secara default), centang Simpan sebagai ketik, pilih CSV (Macintosh) (* .CSV) dari daftar drop-down
doc batch ke csv 5

3. klik Split untuk memunculkan Jelajahi Folder dialog, pilih atau buat folder untuk menempatkan file CSV.
doc batch ke csv 6

4. klik OK, sekarang buku kerja telah dipisahkan sebagai file CSV terpisah.
doc batch ke csv 7


Alat Produktivitas Kantor Terbaik

Kutools for Excel Memecahkan Sebagian Besar Masalah Anda, dan Meningkatkan Produktivitas Anda hingga 80%

  • Reuse: Masukkan dengan cepat rumus, bagan yang kompleks dan apa pun yang pernah Anda gunakan sebelumnya; Enkripsi Sel dengan kata sandi; Buat Milis dan mengirim email ...
  • Bilah Formula Super (dengan mudah mengedit beberapa baris teks dan rumus); Membaca Tata Letak (membaca dan mengedit sel dalam jumlah besar dengan mudah); Tempel ke Rentang yang Difilter...
  • Gabungkan Sel / Baris / Kolom tanpa kehilangan Data; Pisahkan Konten Sel; Gabungkan Baris / Kolom Duplikat... Mencegah Sel Duplikat; Bandingkan Rentang...
  • Pilih Duplikat atau Unik Baris; Pilih Baris Kosong (semua sel kosong); Temukan Super dan Temukan Fuzzy di Banyak Buku Kerja; Pilih Acak ...
  • Salinan Tepat Beberapa Sel tanpa mengubah referensi rumus; Buat Referensi Otomatis ke Beberapa Lembar; Sisipkan Poin, Kotak Centang, dan lainnya ...
  • Ekstrak Teks, Tambahkan Teks, Hapus berdasarkan Posisi, Hapus Space; Membuat dan Mencetak Subtotal Paging; Konversi Konten Antar Sel dan Komentar...
  • Filter Super (simpan dan terapkan skema filter ke sheet lain); Penyortiran Lanjutan menurut bulan / minggu / hari, frekuensi dan lainnya; Filter Khusus dengan huruf tebal, miring ...
  • Gabungkan Workbooks dan WorkSheets; Gabungkan Tabel berdasarkan kolom kunci; Pisahkan Data menjadi Beberapa Lembar; Konversi Batch xls, xlsx dan PDF...
  • Lebih dari 300 fitur canggih. Mendukung Office / Excel 2007-2021 dan 365. Mendukung semua bahasa. Penerapan yang mudah di perusahaan atau organisasi Anda. Fitur lengkap Uji coba gratis 30 hari. Jaminan uang kembali 60 hari.
tab kte 201905

Tab Office Membawa antarmuka Tab ke Office, dan Membuat Pekerjaan Anda Jauh Lebih Mudah

  • Aktifkan pengeditan dan pembacaan tab di Word, Excel, PowerPoint, Publisher, Access, Visio, dan Project.
  • Buka dan buat banyak dokumen di tab baru di jendela yang sama, bukan di jendela baru.
  • Meningkatkan produktivitas Anda sebesar 50%, dan mengurangi ratusan klik mouse untuk Anda setiap hari!
officetab bawah
Urutkan komentar berdasarkan
komentar (36)
Belum ada peringkat. Jadilah yang pertama memberi peringkat!
Komentar ini diminimalkan oleh moderator di situs
Ty itu benar-benar berfungsi sayang !!
Komentar ini diminimalkan oleh moderator di situs
Berfungsi dengan baik, terima kasih untuk kodenya!
Satu-satunya komentar saya adalah bahwa kode ini memotong nama file ketika ada "." dalam nama file itu sendiri (misalnya file.123.csv berubah menjadi file.csv).
Komentar ini diminimalkan oleh moderator di situs
Sudahkah Anda menemukan cara untuk mengatasi masalah ini?
Komentar ini diminimalkan oleh moderator di situs
Karol,

Pada baris 33 saya telah mengganti kode ini:

xStrCSVFName = xStrSPath & Kiri(xStrEFFile, InStr(1, xStrEFFile, ".") - 1) & ".csv"

Dengan kode ini:

xStrCSVFName = xStrSPath & Kiri(xStrEFFile, InStr(1, xStrEFFile, ".xlsx") - 1) & ".csv"

Perhatikan bahwa jika Anda menggunakan beberapa ekstensi excel lainnya (.xls, .xlsm, dll.) Anda harus mengubahnya :)
Komentar ini diminimalkan oleh moderator di situs
Terima kasih banyak! Ini telah menyelamatkan saya begitu banyak waktu!!
Komentar ini diminimalkan oleh moderator di situs
Komentar kecil lainnya:

Jika sel dalam file Excel asli semuanya diformat sebagai "Umum", beberapa akurasi hilang saat file disimpan sebagai CSV
Misalnya, jika nilai sel di Excel adalah 0.123456789123456, maka nilai dalam CSV akan menjadi 0.123456789 (sisa desimal tidak ada), selama sel diformat sebagai 'Umum'. Ini dapat diselesaikan dengan memformat semua sel dalam file Excel menjadi apa pun selain 'Umum' (misalnya, 'Teks'). Dalam hal ini, CSV *akan* masih memiliki detail/akurasi lengkap. Yaitu nilai dalam file Excel akan sepenuhnya utuh setelah disimpan sebagai CSV.

Bagaimana makro ini bisa berubah, sehingga mengatur pemformatan semua sel dalam file Excel ke 'Teks', sebelum menyimpan sebagai CSV?
Saya membayangkan bahwa entah bagaimana itu harus menggunakan yang berikut ini, tetapi saya tidak tahu cara memasukkan dengan benar ke dalam makro:

Sel. Pilih
Pilihan.NumberFormat = "@"
Komentar ini diminimalkan oleh moderator di situs
Terima kasih sudah berbagi. Saya mencoba menyimpan beberapa file xls yang berisi nilai unik, menghasilkan prompt yang menanyakan ya atau tidak sebelum menyimpan. Perintah itu berbunyi..

"Beberapa fitur di buku kerja Anda mungkin hilang jika Anda menyimpannya sebagai CSV (Dipisahkan koma). Apakah Anda ingin tetap menggunakan format itu?"

Adakah yang tahu di mana harus menambahkan kode untuk menjawab ya ke prompt ini?
Komentar ini diminimalkan oleh moderator di situs
Saya pikir ada baiknya menambahkan penanganan kesalahan yang lebih baik untuk file dengan karakter khusus, saat ini diabaikan begitu saja.
Komentar ini diminimalkan oleh moderator di situs
terima kasih atas :)
Komentar ini diminimalkan oleh moderator di situs
Ini luar biasa. Terima kasih!
Komentar ini diminimalkan oleh moderator di situs
Halo, apakah ada perubahan cepat pada kode yang memungkinkan saya untuk mengubah dari CSV UTF-8 (dibatasi koma) menjadi hanya CSV (dibatasi koma)? Saya mencoba metode pertama dan berharap tetapi sepertinya itu tidak akan mengubahnya karena sudah dalam beberapa bentuk CSV. Mungkin ada proses yang lebih mudah tetapi saya tidak dapat menemukan apa pun. Saya harus mengonversi mungkin 150 file yang disimpan dalam format ini dan saya tidak ingin membuka setiap file dan Save As jika saya dapat menghindarinya. Bantuan apa pun dihargai!
Komentar ini diminimalkan oleh moderator di situs
Jadi, setelah meninjau kode sedikit lebih dekat, saya melihat di mana jenis file awal harus .xls. Jadi mengganti dengan .csv telah memecahkan masalah.
Komentar ini diminimalkan oleh moderator di situs
Halo,
das Makro funktioniert ganz gut, aber bei mir kommt, wenn ich als nama file:xlCSVUTF8 eine anders formatierte CSV raus als ich über speichern unter -> csv(utf8) erreiche!
Komentar ini diminimalkan oleh moderator di situs
xObjWB.SaveAs Nama File:=xStrCSVFName, Format File:=xlCSVUTF8
Komentar ini diminimalkan oleh moderator di situs
juga er schreibt die verschiedenen Spalten alle in eine Spalte, dass müsste der Fehler sein?!
Komentar ini diminimalkan oleh moderator di situs
hai.. di beberapa file excel yang akan di convert ke csv ada nominal yang harus dibulatkan, apa solusinya? terima kasih
Komentar ini diminimalkan oleh moderator di situs
Hai, Sam, tidak ada solusi untuk mengatasi masalah ini kecuali memformat data sebagai teks sebelum mengonversi file ke csv.
Komentar ini diminimalkan oleh moderator di situs
Ketika saya menjalankan ini, itu hanya mengonversi lembar kerja pertama, dan mengabaikan lembar tambahan di dalam buku kerja. Apakah ada cara untuk mengedit kode untuk memasukkan lembar tambahan?
Komentar ini diminimalkan oleh moderator di situs
Hai, Anda dapat mencoba kode di bawah ini, ini akan menyimpan semua lembar buku kerja di folder ke csv secara terpisah. Itu tidak dapat mengerjakan buku kerja saat ini.
Sub WorkbooksSaveAsCsvToFolder()

'UpdatebyExtendoffice20220520

Dim xObjWB As Workbook

Dim xObjWS As Worksheet

Dim xStrEFPath As String

Dim xStrEFFile As String

Dim xObjFD As FileDialog

Dim xObjSFD As FileDialog

Dim xStrSPath As String

Dim xStrCSVFName As String

Dim xWSh As Worksheet

    Application.ScreenUpdating = False

    Application.EnableEvents = False

    Application.Calculation = xlCalculationManual

    On Error Resume Next

Set xObjFD = Application.FileDialog(msoFileDialogFolderPicker)

    xObjFD.AllowMultiSelect = False

    xObjFD.Title = "Kutools for Excel - Select a folder which contains Excel files"

    If xObjFD.Show <> -1 Then Exit Sub

    xStrEFPath = xObjFD.SelectedItems(1) & "\"

    Set xObjSFD = Application.FileDialog(msoFileDialogFolderPicker)

    xObjSFD.AllowMultiSelect = False

    xObjSFD.Title = "Kutools for Excel - Select a folder to locate CSV Files "

    If xObjSFD.Show <> -1 Then Exit Sub

    xStrSPath = xObjSFD.SelectedItems(1) & "\"

    xStrEFFile = Dir(xStrEFPath & "*.xls*")

    Do While xStrEFFile <> ""

        Set xObjWB = Workbooks.Open(Filename:=xStrEFPath & xStrEFFile)

        For Each xWSh In xObjWB.Worksheets

            xWSh.Activate

            xStrCSVFName = xStrSPath & Left(xStrEFFile, InStr(1, xStrEFFile, ".") - 1) & "_" & xWSh.Name & ".csv"

            xObjWB.SaveAs Filename:=xStrCSVFName, FileFormat:=xlCSV

        Next

        xStrCSVFName = xStrSPath & Left(xStrEFFile, InStr(1, xStrEFFile, ".") - 1) & ".csv"

        xObjWB.SaveAs Filename:=xStrCSVFName, FileFormat:=xlCSV

        xObjWB.Close savechanges:=False

        xStrEFFile = Dir

  Loop

    Application.Calculation = xlCalculationAutomatic

    Application.EnableEvents = True

    Application.ScreenUpdating = True

End Sub
Komentar ini diminimalkan oleh moderator di situs
Hai Sunny
Dengan modifikasi apa pun dalam kode yang sama, bisakah saya mengekstrak hanya satu lembar kerja dengan nama lembar yang sama di semua file?
Komentar ini diminimalkan oleh moderator di situs
Hai, Prashant, saya tidak mengerti pertanyaan Anda dengan jelas. Biar saya tebak: jika ada dua buku kerja bernama book1 dan book2, keduanya berisi sheet bernama sheet1, apakah Anda hanya ingin mendapatkan satu sheet (sheet1) dari dua workbook ini, dan sheet1 lainnya tidak perlu diekstraksi?
Komentar ini diminimalkan oleh moderator di situs
Belum bisa membuatnya berfungsi untuk file xls saya. Itu adalah 97-03 lembar kerja dan saat ini saya menjalankan versi microsoft 365 yang paling aktif. Ketika saya menjalankan kode, folder itu muncul sebagai kosong
Komentar ini diminimalkan oleh moderator di situs
Hai, saya minta maaf karena masalah Anda tidak muncul kembali di versi saya, saya tidak punya ide untuk membantu Anda.
Komentar ini diminimalkan oleh moderator di situs
Masalah yang sama dengan saya. Menjalankan office 365 terbaru tetapi tidak ada yang terjadi setelah mengatur kotak dialog dua folder.
Komentar ini diminimalkan oleh moderator di situs
Hai, Dok SJ, terima kasih atas pengingat Anda, saya telah memeriksa kode VBA, ada beberapa masalah di Office 365, sekarang saya telah memperbarui VBA, silakan coba lagi.
Komentar ini diminimalkan oleh moderator di situs
Bom Dia!!

muito top esse codigo, porim estou com o problema abaixo

Tem como salvar em format "CSV (separado por vírgulas) (*.csv)", pois ao executar esse código meus arquivos ficam com "," no format que eu preciso eles não ficam com essa vírgula
Komentar ini diminimalkan oleh moderator di situs
2019.
..
Komentar ini diminimalkan oleh moderator di situs
Hai, YOY, saya telah menguji VBA di Professional Plus Excel 2019, berfungsi dengan lancar dan benar. Haruskah Anda memberi saya lebih banyak detail tentang file Anda, seperti versi terperinci, konten file yang ingin Anda konversi?
Komentar ini diminimalkan oleh moderator di situs
Hai, Bagaimana saya bisa mengubah pembatas?
Pada script di atas, pembatasnya adalah koma (,).
Terima kasih :D
Komentar ini diminimalkan oleh moderator di situs
Hai,
Saya menghadapi beberapa masalah saat menggunakan skrip
Ho dapatkah saya mengubah pembatas dalam skrip karena pembatas dalam output csv dalam koma (,)
Saya membutuhkan pembatas bukan koma karena kumpulan data saya terdiri dari banyak koma.


Terima kasih
Komentar ini diminimalkan oleh moderator di situs
Ajouter Lokal:=Benar cette ligne:
xObjWB.SaveAs Nama File:=xStrCSVFName, Format File:=xlCSV, Lokal:=True

Permet de prendre le séparateur de votre système, moi c'est point-virgule ;
Komentar ini diminimalkan oleh moderator di situs
Halo,

vor einem Jahr habe ich den VBA-Code ohne Probleme ausgeführt. Heute wollte ich es nochmal versuchen, leider gibt es einen Laufzeitfehler 1004 mit dem Hinweis
"Die Methode 'Calculation' ist für Objekt '_Application' fehlgeschlagen."

Debuggen verweist auf folgende Zeile:
Application.Calculation = xlCalculationManual

Kann jemand weiterhelfen?

LG, Maks
Komentar ini diminimalkan oleh moderator di situs
Halo,

ich habe den VBA-Code vor einem Jahr ohne Probleme angewendet. Fungsi sebenarnya tidak lebih dari itu.
Es gibt einen Laufzeitfehler 1004 mit dem Hinweis: "Metode Mati 'perhitungan' untuk Objekt '_Application' ist fehlgeschlagen."

Debuggen verweist auf die Zeile "Application.Calculation = xlCalculationManual".

Ich würde mich sehr freuen, wenn jeman and weiterhelfen könnte.

LG, Maks
Komentar ini diminimalkan oleh moderator di situs
Hai Gast, tolong dicek dulu apakah kode yang kamu copy sudah benar, tidak ada "_" di dalam kodenya. Jika Anda telah memeriksa semua kode sudah benar, Anda dapat menghapus baris kode
Application.Calculation = xlCalculationManual lalu coba lagi. Harap perhatikan bahwa ada dua baris Application.Calculation = xlCalculationManual dalam kode.
Belum ada komentar yang diposting di sini
Muat Lebih
Tinggalkan komentar anda
Posting sebagai Tamu
×
Beri peringkat pos ini:
0   Karakter
Lokasi yang Disarankan

Ikuti kami

Hak Cipta © 2009 - www.extendoffice.com. | Seluruh hak cipta. Dipersembahkan oleh ExtendOffice. | Peta Situs
Microsoft dan logo Office adalah merek dagang atau merek dagang terdaftar dari Microsoft Corporation di Amerika Serikat dan / atau negara lain.
Dilindungi oleh Sectigo SSL