Saat membuat file CSV menggunakan menu untuk mengekspor lembar kerja, Arkadiusz mencatat bahwa dia dapat menentukan bahwa dia ingin menggunakan titik koma [;] sebagai pembatas bidang. Namun, jika dia menyimpan file CSV menggunakan makro [FileFormat. =xlCSV atau xlCSVWindows], maka dia tidak dapat menentukan titik koma sebagai pembatas
Ini bekerja dengan cara ini dengan desain di VBA. Implementasi Excel dari rutin ekspor untuk VBA selalu menggunakan apa pun pengaturan regional Windows untuk menentukan bagaimana item dalam CSV harus dipisahkan. Khususnya, rutin melihat bidang Pemisah Daftar untuk pembatas. Ini berarti Anda dapat, jika diinginkan, mengubah pembatas menjadi titik koma dengan mengubah pengaturan Pemisah Daftar di konfigurasi pengaturan regional Anda
Jika Anda tidak ingin mengubah pengaturan regional, Anda dapat menulis makro Anda sendiri yang akan menampilkan file dengan cara apa pun yang Anda inginkan. Pertimbangkan, sejenak, makro berikut, yang akan menampilkan file
Sub CreateFile[] FName = ActiveWorkbook.Name If Right[FName, 4] = ".xls" Then FName = Mid[FName, 1, Len[FName] - 4] End If Columns[1].Insert Shift:=xlToRight For i = 1 To Range["B65000"].End[xlUp].Row TempString = "" For j = 2 To Range["HA1"].End[xlToLeft].Column If j Range["HA1"].End[xlToLeft].Column Then TempString = TempString & _ Cells[i, j].Value & ";" Else TempString = TempString & _ Cells[i, j].Value End If Next Cells[i, 1].Value = TempString Next Columns[1].Select Selection.Copy Workbooks.Add Range["A1"].Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:=FName & ".txt", _ FileFormat:=xlPrinter End Sub
Makro ini menggunakan pendekatan unik untuk membuat file keluaran. Apa yang dilakukannya adalah memasukkan kolom di sebelah kiri lembar kerja Anda, lalu menggabungkan semua data di sebelah kanan kolom itu ke dalam kolom A yang baru disisipkan. Itu menambahkan titik koma di antara setiap bidang. Setelah selesai, itu mengambil informasi yang dimasukkan ke dalam kolom A dan menuliskannya ke dalam buku kerja baru. Buku kerja ini kemudian disimpan ke disk menggunakan format file xlPrinter, yang berarti buku kerja ini dikeluarkan "sebagaimana adanya" tanpa modifikasi apa pun
Jika Anda lebih suka pendekatan yang lebih langsung, menulis informasi langsung ke file tanpa membuat perubahan pada lembar kerja Anda, lihat makro di posting blog ini
//web.archive.org/web/20060302021412//www.dicks-blog.com:80/archives/2004/11/09/roll-your-own-csv/_
Makro menggunakan koma di antara setiap bidang, tetapi dapat dengan mudah dimodifikasi sehingga menggunakan titik koma sebagai gantinya
jika Sahsur benar, bahwa pengaturan regional ini ditimpa oleh bug, dia mungkin menyediakan rutinitas untuk mengatur ulang koma kembali ke titik koma sebelum menjalankan wkb8. Pernyataan SaveAs[], dan semua harus berfungsi. Namun, saya tidak tahu cara menelepon dari kode VBA atau VB. Kode .NET [yang menunjukkan BUG yang sama], kode penanganan tabel reginal
Jika Anda menggunakan lokal bahasa Inggris dan Anda di Excel mengubah pemisah desimal dari sistem menjadi koma, Excel memahami bahwa dia tidak dapat menggunakan koma sebagai pembatas bidang dan akan menggunakan titik koma sebagai gantinya dan akan menyimpan file csv dalam format non-bahasa Inggris, misalnya. 1,5;23,45
Namun, jika Anda bekerja dengan misalnya lokal Ceko [atau mungkin dengan lokal Prancis] dan Anda di Excel mengubah pemisah desimal menjadi titik sebagai benar untuk bahasa Inggris csv dan simpan file ini. Format file misalnya. 1. 5;23;45 dan tidak diharapkan 1. 5,23. 45. Alasannya adalah, saya kira, Excel tidak memiliki alasan untuk mengubah pemisah bidang dari titik koma menjadi koma, karena titik koma adalah pemisah bidang yang benar untuk file csv dan dan sama sekali tidak bertentangan dengan pembatas desimal titik atau koma.
Jadi dengan lokal bahasa Inggris Anda dapat menyimpan csv non-Inggris biasa dengan pembatas desimal koma dan pemisah bidang titik koma, tetapi dengan lokal non-Inggris [Ceko atau Prancis] Anda tidak dapat menyimpan csv bahasa Inggris biasa, dengan pembatas dot desimal dan pemisah bidang koma, tetapi
Tentu saja kemungkinan lain adalah mengganti lokal dengan kemungkinan masalah lain, misalnya dengan aplikasi lain
Salam Hormat,
Martin Molhanec
kata hayder
7 Mei 2022 pukul 1. 49 sore
[ 0. 0. 0. 1. 7. 6. 0. 0. 0. 0. 0. 2. 4. 1
0. 0. 2. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0
0. 0. 0. 0. 0. 0. 0. 34. 128. 106. 6. 0. 23. 4
1. 95. 128. 42. 18. 7. 128. 15. 2. 18. 16. 4. 10. 23
46. 6. 10. 73. 79. 1. 0. 1. 19. 12. 29. 128. 83. 27
10. 5. 29. 7. 3. 23. 82. 128. 128. 25. 128. 71. 13. 15
25. 40. 66. 51. 37. 43. 25. 81. 128. 19. 5. 12. 47. 43
20. 73. 13. 19. 14. 8. 40. 77. 52. 23. 48. 22. 14. 6
5. 38. 31. 37. 78. 29. 4. 1. 37. 36. 56. 81. 20. 9
3. 6. ];[ 0. 0. 0. 1. 7. 6. 0. 0. 0. 0. 0. 2. 4. 1
0. 0. 2. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0
0. 0. 0. 0. 0. 0. 0. 34. 128. 106. 6. 0. 23. 4
1. 95. 128. 42. 18. 7. 128. 15. 2. 18. 16. 4. 10. 23
46. 6. 10. 73. 79. 1. 0. 1. 19. 12. 29. 128. 83. 27
10. 5. 29. 7. 3. 23. 82. 128. 128. 25. 128. 71. 13. 15
25. 40. 66. 51. 37. 43. 25. 81. 128. 19. 5. 12. 47. 43
20. 73. 13. 19. 14. 8. 40. 77. 52. 23. 48. 22. 14. 6
5. 38. 31. 37. 78. 29. 4. 1. 37. 36. 56. 81. 20. 9
3. 6. ];BENAR
Harap perlu membuat kode atau alat untuk menjadi tiga detail di atas sebagai kolom, artinya [ ] [ ] Benar sebagai tiga kolom