【问题标题】:overwrite a csv file using vba使用 vba 覆盖 csv 文件
【发布时间】:2012-12-10 14:56:42
【问题描述】:

有许多类似的帖子,但没有一个完全符合我想要的,因为它需要让我理解

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

【问题讨论】:

  • 使用 Excel VBA 引用自动执行例程,这将允许您选择和修改单个单元格,例如 OldColumn1 可能在单元格 A1 中,这将更容易使用。
  • 抱歉,马特 - 你能详细说明一下吗?大概这会改变:“Open PathName & “\Test.csv” For Output Lock Write As #OutputFileNum” 行。做什么?
  • @GERALDDUNN 请看我的回答,您将不再需要使用文件句柄。

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


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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      • 1970-01-01
      • 2013-12-28
      • 2016-03-02
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多