Экспорт данных в 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

надеюсь, что это помогает