Access - 使用 VBA 使用 headers 导出管道 delim CSV

Access - Export pipe delim CSV with headers using VBA

这是我发布的第一个问题,希望不要违反任何网站规则!我一直在寻找答案,但似乎找不到我要找的东西。

我有一段 VB 代码正在导出数据,但它不包括我需要的列 headers。

我使用的是 Access 2010,我正在将管道分隔的 CSV 文件导出到我选择的文件夹位置。我正在从使用多个查询从 parent table 创建的 table 中导出,所以它基本上只是我正在尝试的 table 结果以 CSV 格式导出。

这是我正在使用的代码,它导出为 pipe delim CSV 但不添加 headers;

Private Sub BtnExportCSV_Click()

Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFile As Integer
Dim strFilePath As String
Dim intCount As Integer
Dim strHold

strFilePath = "I:\Data\test.csv"

Set db = CurrentDb

Set rst = db.OpenRecordset("T_Export_CSV", dbOpenForwardOnly)

intFile = FreeFile


Open strFilePath For Output As #intFile

Do Until rst.EOF
   For intCount = 0 To rst.Fields.Count - 1
    strHold = strHold & rst(intCount).Value & "|"
   Next
   If Right(strHold, 1) = "|" Then
      strHold = Left(strHold, Len(strHold) - 1)
   End If
   Print #intFile, strHold
   rst.MoveNext
   strHold = vbNullString
Loop

Close intFile
rst.Close
Set rst = Nothing

MsgBox ("Export Completed Successfully")

End Sub

在此先感谢您的帮助!

斯科特

您还需要将记录集字段的名称-属性写入文件。

将此插入到您的代码中以实现该目的:

[...]
Open strFilePath For Output As #intFile

If Not rst.EOF Then
   For intCount = 0 To rst.Fields.Count - 1
      strHold = strHold & rst.Fields(intCount).Name & "|"
   Next
   If Right(strHold, 1) = "|" Then
      strHold = Left(strHold, Len(strHold) - 1)
   End If
   Print #intFile, strHold
   strHold = vbNullString
End If

Do Until rst.EOF
[...]