【问题标题】:Exporting Data into a CSV - Excel VBA将数据导出到 CSV - Excel VBA
【发布时间】:2013-10-17 01:01:57
【问题描述】:

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

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

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

说C:\USERS\Documents\Sample.csv。

我见过类似的东西

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

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

【问题讨论】:

  • 首先打开一个新的工作簿。然后让您的宏在新工作簿中存入数据。然后让您将新工作簿以 csv 格式保存在您选择的文件夹中,并使用您的选择名称。然后关闭新工作簿。
  • @Gary'sStudent 我正在使用Workbooks.Add 创建另一个工作簿。我现在如何激活以确保我正在导入它......类似于NewWorkbook.Sheets(1).Activate?
  • 不要只使用 workbooks.add... 使用类似... dim wb as workbook // Set wb = workbooks.add // with wb ...

标签: vba csv excel


【解决方案1】:

您可以使用 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

【讨论】:

  • 此解决方案不处理数据中存在空格、换行符或逗号的情况。始终使用真正的 CSV 函数,而不是连接您自己的字符串。
  • 无数据...而不是暗示更好的解决方案而不是真正添加到站点...请花时间发布您的更好的解决方案。我总是乐于学习。也许,尽量不要把别人打倒,而要试着帮助他们。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    刚刚将@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
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2018-01-11
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多