使用 VBA 覆盖 CSV 文件


有许多

类似的帖子,但没有一个能像我需要理解的那样简单地做我想要的

我想使用 Access 2007 VBA 打开一个 csv 文件并替换列标题行,即:

OldColumn1,OldColumn2
1,2

NewColumn1,NewColumn2
1,2

即不会干扰数据的臀部。

然后保存并关闭。

我试过这段代码,但它删除了我的数据:

Sub WriteFile()

  Dim OutputFileNum As Integer
  Dim PathName As String
  PathName = Application.ActiveWorkbook.Path
  OutputFileNum = FreeFile
  Open PathName & "Test.csv" For Output Lock Write As #OutputFileNum
  Print #OutputFileNum, "NewCol1" & "," & "NewCol2"

  Close OutputFileNum
End Sub
  1. 导入或链接到.csv,以便在 Access 2007 数据库中具有记录集。
  2. 使用 NewColumn[x] 作为 OldColumn[x] 的别名编写查询。
  3. 编写 vba 代码以使用 TransferText 功能或制作宏以执行相同的操作以将查询导出为.csv文件(如果需要/需要,请覆盖原始 csv)。

显然,您可以做很多额外的事情来为任何数量或类型的文件自动化和重现此概念。 但是上述解决方案应该适用于所有MS Access环境。

如果您想了解有关这些步骤的详细信息,请告诉我。

根据我之前的评论,请参阅使用 Excel 参考的方法:

Public Sub EditCsv()
Dim xlApp As Object
dim xlWbk As Object
Dim xlWst As Object
    Set xlApp = CreateObject("Excel.Application")
    Set xlWbk = xlApp.Workbooks.Open ".../Test.csv" 'Amend this to your needs
    Set xlWst = xlWbk.Sheets(1)
    'This assumes the columns are at the beginning of the file
    xlWst.Range("A1") = "My New Column Name"
    xlWst.Range("B1") = "My New Second Column Name"
    xlWbk.Close -1 'Close and save the file here
    xlApp.Quit
    Set xlApp = Nothing
    Set xlWbk = Nothing
    Set xlWst = Nothing
End Sub

最新更新