将数据导出为CSV - Excel VBA

Tha*_*de1 9 csv excel vba excel-vba

假设我有一个函数可以将一些数据生成到当前工作表的单元格中,如:

Cells(1, "A").Value = ...
Cells(2, "A").Value = ...
Cells(3, "A").Value = ...
Cells(4, "A").Value = ...
Run Code Online (Sandbox Code Playgroud)

我想创建并将其加载到csv文件中,而不是当前工作簿中的当前工作表

C:\USERS\Documents\Sample.csv.

我见过像这样的东西

     ActiveWorkbook.SaveAs Filename:= _
"c:\MyFile.csv", FileFormat:=xlCSV _
, CreateBackup:=False
Run Code Online (Sandbox Code Playgroud)

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

The*_*man 12

您可以使用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
Run Code Online (Sandbox Code Playgroud)

  • 无数据...而不是暗示一个更好的解决方案,而不是真正添加到网站...请花时间发布您的更好的解决方案.我总是很乐意学习.也许,尽量不要打倒别人,而是尽力帮助他们. (10认同)
  • 此解决方案不处理数据中存在空格或换行符或逗号的情况.始终使用真正的CSV函数,而不是连接自己的字符串. (5认同)

Cha*_*ith 7

使用.move创建目标工作表的新书,然后将新创建的书另存为CSV.调整路径名以调整您希望保存csv的目录.

    Pathname = "" & Thisworkbook.path & "YourName.csv"
    Sheets("Sheet you want as CSV").Move
    ActiveWorkbook.SaveAs Filename:=PathName, _
        FileFormat:=xlCSV, CreateBackup:=False
Run Code Online (Sandbox Code Playgroud)