Ms access 将查询输出导出到文本文件

Ms access 将查询输出导出到文本文件,ms-access,ms-access-2007,vba,Ms Access,Ms Access 2007,Vba,我有一个access查询,我正试图使用以下代码将其导出到文本文件: DoCmd.TransferText acExportFixed, "Export Specification", _ "Test Query", "C:\Users\Documents\TestOutput.txt", True 我遇到的问题是:输出文件“TestOutput.txt”以固定宽度显示数据,但列标题以逗号分隔。我希望列标题也是固定宽度的 哪些列标题不会显示为与其余数据相同?AFAICT,这是Transf

我有一个access查询,我正试图使用以下代码将其导出到文本文件:

DoCmd.TransferText acExportFixed, "Export Specification", _
    "Test Query", "C:\Users\Documents\TestOutput.txt", True
我遇到的问题是:输出文件“TestOutput.txt”以固定宽度显示数据,但列标题以逗号分隔。我希望列标题也是固定宽度的


哪些列标题不会显示为与其余数据相同?

AFAICT,这是TransferText不可避免的“功能”。它似乎缺少任何类型的内置智能来表示“好的,我们将作为acExportFixed导出,所以让我们检查导出规范中定义的列宽,并使用这些相同的宽度输出列标题”。相反,它只是以逗号分隔的列表形式给出列名

与Access中的其他内容一样,当其默认行为不令人满意时,可以编写VBA代码以自己的方式执行

Const VB_FORREADING = 1
Const VB_FORWRITING = 2
Const cstrFile As String = "C:\Users\Documents\TestOutput.txt"
Const cstrHeaderRow As String = "col1    col2    etc..."
Dim oFSO As Object
Dim oFile As Object
Dim strContents As String

' do TransferText without the field names '
' (HasFieldNames default = False) '
DoCmd.TransferText acExportFixed, "Export Specification", _
    "Test Query", cstrFile 

Set oFSO = CreateObject("Scripting.FileSystemObject")
' read file content into strContents string variable '
Set oFile = oFSO.OpenTextFile(cstrFile, VB_FORREADING)
strContents = oFile.ReadAll
oFile.Close
' re-write file using cstrHeaderRow plus strContents '
Set oFile = oFSO.OpenTextFile(cstrFile, VB_FORWRITING)
oFile.write cstrHeaderRow & vbCrLf & strContents
oFile.Close

Set oFile = Nothing
Set oFSO = Nothing

我可能需要将查询输出直接写入文本文件,而不是使用DoCmd.TransferText创建文本文件,然后使用FileSystemObject编辑它。这可能吗?当然可以。FileSystemObject的file对象包括writeline方法,为此,您可能更喜欢write方法。这当然可以做到,但我的直觉反应是,它可能需要比我建议的更多的代码。去争取吧我需要遵循哪些步骤?我需要打开一个记录集,然后在输出中循环并写入每一行吗?很抱歉,我想从access查询输出中写入一个文件,不知道DoCmd.TransferText需要一个现有文件来写入,我刚刚发现输出文件中不需要列标题。