VBA + TransferText + SpecificationName

Posted

技术标签:

【中文标题】VBA + TransferText + SpecificationName【英文标题】: 【发布时间】:2011-04-06 14:47:06 【问题描述】:

以下是我的 DoCmd.TransferText 的样子

oCmd.TransferText TransferType:=acExportDelim, _
            SpecificationName:="Schema.ini", _
            TableName:="BASIC_DATA_Query", _
            FileName:="BASIC_DATA_Query_Result.txt", _
            HasFieldNames:=False

当我将“schema.ini”作为我的规范名称时,我得到一个错误

“运行时错误‘3625’:文本文件 规范“Schema.ini”没有 存在。您不能导入、导出或 使用规范链接。”

即使参考了这篇文章:http://support.microsoft.com/kb/241477

我无法解决问题。我的“Schema.ini”与数据库位于同一文件夹中。

BASIC_DATA_Query - 是一个包含我所有结果的查询,我需要将其导出到文件 BASIC_DATA_Query_Result.txt 中,标题和字段由制表符分隔。

什么是可能的解决方案?

【问题讨论】:

【参考方案1】:

VBA 似乎存在问题,这是自 2004 年以来的一个已知问题 :(.

无论如何,我编写了要导出的代码,这解决了我的问题。我在这里为其他人发布代码

Sub ExportTextFileDelimited(FileName As String, _
    DataSet As String, _
    Delimiter As String, _
    TextQualifier As String, _
    WithFieldNames As Boolean)
    On Error GoTo ExportTextFile_Err

    Dim cnn As ADODB.Connection
    Dim rst As New ADODB.Recordset

    Dim Directory As String
    Dim MyString As String, strSQL As String
    Dim strDS As String
    Dim I As Integer

    Open FileName For Output As #1
    Set cnn = CurrentProject.Connection

    rst.Open DataSet, cnn, adOpenForwardOnly, adLockReadOnly
    If WithFieldNames Then
        For I = 0 To rst.Fields.Count - 1
            MyString = MyString & TextQualifier & rst(I).Name & TextQualifier & Delimiter
        Next I
        MyString = Left(MyString, Len(MyString) - 1)
        Print #1, MyString
    End If
    rst.MoveFirst
    Do While Not rst.EOF
        MyString = ""
        For I = 0 To rst.Fields.Count - 1
            'check for text datatype (202)
            If rst(I).Type = 202 Then
                MyString = MyString & TextQualifier & _
                rst(I) & TextQualifier & Delimiter
            Else
                MyString = MyString & rst(I) & Delimiter '<----
            End If
        Next I
            MyString = Left(MyString, Len(MyString) - 2) '<---
        Print #1, MyString & TextQualifier
        rst.MoveNext
    Loop

ExportTextFile_Exit:
    ' Close text file.
    Close #1
    rst.Close
    Set cnn = Nothing
    Exit Sub
ExportTextFile_Err:
    MsgBox Err.Description
    Resume ExportTextFile_Exit
End Sub

用法:

调用 ExportTextFileDelimited("C:\Query.txt", "Query", vbTab, """", True)

【讨论】:

以上是关于VBA + TransferText + SpecificationName的主要内容,如果未能解决你的问题,请参考以下文章

MS Access VBA DoCmd.TransferText 如何分隔列?

访问 VBA DoCmd.TransferText CSV 导入 - 错误数据类型检测删除必要的字符串信息

TransferText 导出到 CSV 不工作,但 TransferSpreadsheet 到 XLSX 工作

访问 VBA - 导入 *.CSV 时出现运行时错误 31519。您无法导入此文件

Docmd.TransferText 问题

Access 中的运行时错误 3011