访问 VBA 将 CSV 文件导出为 UTF-8

Posted

技术标签:

【中文标题】访问 VBA 将 CSV 文件导出为 UTF-8【英文标题】:Access VBA exporting CSV file as UTF-8 【发布时间】:2016-03-21 20:34:38 【问题描述】:

我必须每天多次将数据从 Access 导出为 CSV 文件。在我之前有我工作的人创建了这个 VBA 代码,只需单击一个按钮即可导出数据。但是,我需要对其进行修改,使其导出为不带 BOM 的 UTF-8,以便在我导入它的软件中显示国际字符。

我可以手动导出为文本,然后将其保存为 CSV,当我转到“高级...”设置时,我选择 Code Page: Unicode (UTF-8),这非常有效。但正如我之前所说,我想更改 VBA 代码:

Private Sub Command6_Click()
Dim sExportPath As String
Dim qry As DAO.QueryDef


With Me.List0
    For i = 0 To .ListCount - 1
        If .Selected(i) Then
            sExportPath = Application.CurrentProject.Path & "\final_" & Left(Me.List0.Column(0, i), InStr(Me.List0.Column(0, i), " ") - 1) & ".csv"
            If QueryExists("Final") Then CurrentDb.QueryDefs.Delete "Final"


            Set qry = CurrentDb.CreateQueryDef("Final", "Select Salutation,Email from " & Left(Me.List0.Column(0, i), InStr(Me.List0.Column(0, i), " ") - 1))
            CurrentDb.QueryDefs.Refresh
            DoCmd.TransferText acExportDelim, , "Final", sExportPath, True

        End If
    Next i
End With
End Sub

【问题讨论】:

【参考方案1】:

使用值 65001 作为 CodePage 参数(TransferText 方法的最后一个),表示 Unicode (UTF-8)。

【讨论】:

【参考方案2】:

手动执行导出并像以前一样选择“高级...”。选择“代码页”和其他设置后,单击“另存为...”按钮保存导出规范。然后您可以将保存的规范的名称作为TransferText 方法的第二个参数提供,例如,

DoCmd.TransferText acExportDelim, "MyExportSpecification", "Final", sExportPath, True

【讨论】:

我试过了,得到了这个错误:link 当我尝试导出表 ZResults1 时,它说“找不到对象 'final_ZResults1.csv'。确保对象存在并且正确拼写其名称和路径名” 仔细检查您的代码。对于acExportDelim,您不应该收到该错误。 (对于acImportDelim,如果您尝试导入的文件不存在,则该错误是有意义的。) 该表并不总是被称为 ZResults1,有时它甚至可能是我正在导出的查询。发生这种情况是因为 ExportSpecification 是针对 ZResults1 的,而它正在寻找的是 final_ZResults1 因为“Final”参数?我已经尝试了多种方法,但到目前为止没有任何效果。 @戈德 这是代码:DoCmd.TransferText acExportDelim, "Final_ZResults1 Export Specification", "Final", sExportPath, True

以上是关于访问 VBA 将 CSV 文件导出为 UTF-8的主要内容,如果未能解决你的问题,请参考以下文章

关于将Excel导出成UTF-8编码的csv文件的问题?

检查 csv 文件是不是从 vba 打开

通过vba从查询创建.csv文件

使用 VBA 将单元格区域导出到新的 .csv 文件中并保存而不覆盖

将文本表的数据导出为 .csv (Tableau)

通过 MS Access vba 将一个文件夹中的 CSV 文件合并为一个文件