如何从VBA创build一个单独的CSV文件?

我需要输出一些.csv文件的结果,稍后由另一个进程parsing。 为了产生这些结果,我有一个巨大的工作簿,其中包含我需要的所有macros和函数。

  1. 是否有可能从VBA “创build”一个单独的.csv文件?
  2. 是否有可能使用VBAfunction来写入,而不是用“原始文本”的方式写?

谢谢 :)

是这样的,你想要什么?

 Option Explicit Sub WriteFile() Dim ColNum As Integer Dim Line As String Dim LineValues() As Variant Dim OutputFileNum As Integer Dim PathName As String Dim RowNum As Integer Dim SheetValues() As Variant PathName = Application.ActiveWorkbook.Path OutputFileNum = FreeFile Open PathName & "\Test.csv" For Output Lock Write As #OutputFileNum Print #OutputFileNum, "Field1" & "," & "Field2" SheetValues = Sheets("Sheet1").Range("A1:H9").Value ReDim LineValues(1 To 8) For RowNum = 1 To 9 For ColNum = 1 To 8 LineValues(ColNum) = SheetValues(RowNum, ColNum) Next Line = Join(LineValues, ",") Print #OutputFileNum, Line Next Close OutputFileNum End Sub 

不要忘记,你需要在包含逗号的字段中加引号。

托尼的答案一般工作,但不处理您的文本包含逗号或引号的情况。 您可能更喜欢使用Workbook.SaveAs方法。

如果要将Sheet1的内容另存为分隔的csv文件,则以下示例。

 Sub create_csv() Dim FileName As String Dim PathName As String Dim ws As Worksheet Set ws = ActiveWorkbook.Sheets("Sheet1") FileName = "filename.csv" PathName = Application.ActiveWorkbook.Path ws.Copy ActiveWorkbook.SaveAs FileName:=PathName & "\" & FileName, _ FileFormat:=xlCSV, CreateBackup:=False End Sub 

想象一下你的Sheet1包含:

lorem ipsum

绝杀,嗯ips“嗯”

输出csv文件将是:

LOREM,存有

“绝杀,M”, “IPS”, “嗯” “”

您可以编写一个macros,像从VBA中以CSV格式保存当前工作簿(打开excel文件):

 ActiveWorkbook.SaveAs Filename:="C:\Book1.csv", _ FileFormat:=xlCSVMSDOS, CreateBackup:=False