Saya sangat baru dengan pengkodean VB, saya mencoba menyimpan beberapa lembar kerja file excel ke csv, saya tidak tahu melakukan ini untuk beberapa lembar, tetapi saya menemukan cara untuk melakukannya untuk file tunggal. Saya telah menemukan kode di situs ini yang sangat berguna untuk apa yang saya coba lakukan, hanya masalahnya adalah file-file tersebut disimpan dengan nama lembar kerja tetapi saya mencoba menyimpannya dengan file asli dan nama lembar kerja seperti filename_worksheet name
, saya mencoba melakukannya sendiri tetapi terus mendapatkan kesalahan, bisakah Anda memberi tahu apa yang saya lakukan salah?
Kode yang saya gunakan adalah sebagai berikut:
Public Sub SaveWorksheetsAsCsv()
Dim WS As Excel.Worksheet
Dim SaveToDirectory As String
Dim CurrentWorkbook As String
Dim CurrentFormat As Long
CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat
' Store current details for the workbook
SaveToDirectory = "H:\test\"
For Each WS In ThisWorkbook.Worksheets
WS.SaveAs SaveToDirectory & WS.Name, xlCSV
Next
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True
' Temporarily turn alerts off to prevent the user being prompted
' about overwriting the original file.
End Sub
Saya pikir ini adalah apa yang Anda inginkan ...
Sub SaveWorksheetsAsCsv()
Dim WS As Excel.Worksheet
Dim SaveToDirectory As String
Dim CurrentWorkbook As String
Dim CurrentFormat As Long
CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat
' Store current details for the workbook
SaveToDirectory = "H:\test\"
For Each WS In Application.ActiveWorkbook.Worksheets
WS.SaveAs SaveToDirectory & WS.Name, xlCSV
Next
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True
' Temporarily turn alerts off to prevent the user being prompted
' about overwriting the original file.
End Sub
Apakah ini yang sedang Anda coba?
Option Explicit
Public Sub SaveWorksheetsAsCsv()
Dim WS As Worksheet
Dim SaveToDirectory As String, newName As String
SaveToDirectory = "H:\test\"
For Each WS In ThisWorkbook.Worksheets
newName = GetBookName(ThisWorkbook.Name) & "_" & WS.Name
WS.Copy
ActiveWorkbook.SaveAs SaveToDirectory & newName, xlCSV
ActiveWorkbook.Close Savechanges:=False
Next
End Sub
Function GetBookName(strwb As String) As String
GetBookName = Left(strwb, (InStrRev(strwb, ".", -1, vbTextCompare) - 1))
End Function
Cara terbaik untuk mengetahuinya adalah dengan merekam makro dan melakukan langkah-langkah yang tepat dan melihat kode VBA apa yang dihasilkannya. Anda kemudian dapat pergi dan mengganti bit yang ingin Anda buat generik (yaitu nama file dan sebagainya)