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

时间:2016-03-21 20:34:39

标签: vba csv ms-access utf-8 access-vba

我必须每天多次从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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

手动执行导出并选择"高级..."就像你之前做的那样。在您选择"代码页"和其他设置,点击"另存为..."用于保存导出规范的按钮。然后,您可以提供已保存规范的名称作为TransferText方法的第二个参数,例如,

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