Экспорт данных в CSV-Excel VBA
скажем у меня есть функция, которая генерирует некоторые данные в ячейки на текущем листе, как :
Cells(1, "A").Value = ...
Cells(2, "A").Value = ...
Cells(3, "A").Value = ...
Cells(4, "A").Value = ...
вместо того, чтобы быть текущим листом в текущей книге, я хочу создать и загрузить его в файл csv, чтобы дать путь
сказать C:USERSDocumentsSample.csv
.
Я видел такие вещи, как
ActiveWorkbook.SaveAs Filename:= _
"c:MyFile.csv", FileFormat:=xlCSV _
, CreateBackup:=False
но это просто сохранит текущую книгу в другое место, но я не хочу генерировать данные в текущем листе, а затем сохранять, скорее я хочу экспортировать прямо сейчас? В любом случае, я могу это сделать. Может быть, делает как ActiveWorkbook = //pathname
и затем активировать его ?
3 ответов
вы можете написать в CSV довольно просто, используя VBA. Примером может служить:
Sub WriteCSVFile()
Dim My_filenumber As Integer
Dim logSTR As String
My_filenumber = FreeFile
logSTR = logSTR & Cells(1, "A").Value & " , "
logSTR = logSTR & Cells(2, "A").Value & " , "
logSTR = logSTR & Cells(3, "A").Value & " , "
logSTR = logSTR & Cells(4, "A").Value
Open "C:\USERS\Documents\Sample.csv" For Append As #My_filenumber
Print #My_filenumber, logSTR
Close #My_filenumber
End Sub
использовать .переместитесь, чтобы создать новую книгу из целевого листа .saveas недавно созданная книга в формате CSV. Настройте путь, чтобы настроить каталог, в котором вы хотите сохранить csv.
Pathname = "" & Thisworkbook.path & "YourName.csv"
Sheets("Sheet you want as CSV").Move
ActiveWorkbook.SaveAs Filename:=PathName, _
FileFormat:=xlCSV, CreateBackup:=False
просто изменил код @CharlieSmith на довольно простой и более удобный код, который преобразует все листы в вашей книге в новые csv-файлы с соответствующими именами листов.
Sub WriteCSVFile()
Dim i As Integer
Dim WS_Count As Integer
WS_Count = ActiveWorkbook.Worksheets.Count
For i = 1 To WS_Count
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(i)
PathName = "" & ThisWorkbook.Path & "\" & ws.Name & ".csv"
ws.Copy
ActiveWorkbook.SaveAs Filename:=PathName, _
FileFormat:=xlCSV, CreateBackup:=False
Next i
End Sub
надеюсь, что это помогает