访问 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的主要内容,如果未能解决你的问题,请参考以下文章