【问题标题】:VBA + TransferText + SpecificationNameVBA + 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 中,标题和字段由制表符分隔。

什么是可能的解决方案?

【问题讨论】:

    标签: vba ms-access specifications


    【解决方案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)

    【讨论】:

      猜你喜欢
      • 2021-03-02
      • 2013-01-21
      • 2013-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      相关资源
      最近更新 更多