导出数据到CSV – Excel VBA

说我有一个函数,生成一些数据到单元格到当前的工作表,如:

Cells(1, "A").Value = ... Cells(2, "A").Value = ... Cells(3, "A").Value = ... Cells(4, "A").Value = ... 

而不是作为当前工作簿中的当前工作表,我想要创build并将其加载到一个csv文件,以给出path

C:\USERS\Documents\Sample.csv

我见过类似的东西

  ActiveWorkbook.SaveAs Filename:= _ "c:\MyFile.csv", FileFormat:=xlCSV _ , CreateBackup:=False 

但是,这只会将当前工作簿保存到另一个位置,但我不想在当前工作表中生成数据然后保存,而是要立即导出? 无论如何,我可以做到这一点。 也许使像ActiveWorkbook = //pathname然后激活它?

您可以使用VBA很简单地写入CSV。 一个例子可能是:

 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 

使用.move制作目标表的新书,然后将新创build的图书作为CSV文件保存。 调整path名以调整您希望保存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 

希望这可以帮助