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 工作