使用vba覆盖csv文件

时间:2012-12-10 14:56:42

标签: vba ms-access csv ms-access-2007

有很多类似的帖子,但没有什么能完全符合我的要求,因为它需要我理解

我想使用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

2 个答案:

答案 0 :(得分:1)

  1. 导入或链接到.csv,以便在Access 2007数据库中拥有记录集。
  2. 使用NewColumn [x]编写一个查询作为OldColumn [x]的别名。
  3. 编写vba代码以使用TransferText功能或制作宏来执行相同操作以将查询导出为.csv文件(如果您需要/需要,请覆盖原始csv)。
  4. 显然,你可以做很多额外的事情来自动化和重现任何数量或类型的文件的这个概念。但是上述解决方案应该适用于所有MS Access环境。

    如果您想了解任何这些步骤的详细信息,请与我们联系。

答案 1 :(得分:0)

继我之前的评论之后,请参阅使用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