导入 Access 时不存在文本文件规范

Posted

技术标签:

【中文标题】导入 Access 时不存在文本文件规范【英文标题】:The text file specification does not exist when importing into Access 【发布时间】:2015-12-15 17:12:10 【问题描述】:

我正在尝试使用以下代码将分号分隔的.csv 文件导入到访问数据库中。我已经建立了一个名为“Import-FACTS”的导入规范。并且 VBA 可以看到规范(通过将OLEacc.CurrentProject.ImportExportSpecifications(0) 放入监视窗口。

Sub ImportFacts()

Dim OLEacc As Access.Application

Set OLEacc = GetObject("", "Access.Application")

OLEacc.OpenCurrentDatabase (ThisWorkbook.Path & "\" & "LargeData.accdb")

OLEacc.DoCmd.TransferText TransferType:=acImportDelim, _ 
   SpecificationName:="Import-FACTS",_
   TableName:="Facts",_
   Filename:=ThisWorkbook.Path & "\Facts.csv",_
   HasFieldNames:=False

End Sub

但是我得到了调试消息:

运行时错误“3625”文本文件规范“Import-Facts”确实 不存在您不能使用规范导入导出或链接。

有什么想法吗?

【问题讨论】:

是的,Microsoft Access 14.0 对象库 ImportExportSpecifications 是已保存的作业。 SpecificationName 是另一回事。如果您打开一个 Access 会话(没有 Excel)并尝试相同的 TransferText ... 将 ThisWorkbook.Path 替换为包含 CSV 文件的文件夹的路径,会发生什么情况? @HansUp 它返回相同的错误消息。正如我所建议的那样:DoCmd.TransferText TransferType:=acImportDelim, SpecificationName:="Import-FACTS", TableName:="Facts", FileName:="C:\***\Facts.csv", HasFieldNames:=False。您知道我如何创建导入规范而不是保存的作业吗?我没有意识到有区别。 @HansUp 我已经成功了!非常感谢您为我指明了正确的方向!在导入向导的高级选项中有一种保存导入规范的方法。 【参考方案1】:

导入的重要说明

文本文件规范存在问题,因为名称可能与您检查保存的导入时显示的名称不同。

要知道真名,请运行以下 SQL:

SELECT MSysIMEXSpecs.SpecName, 
       MSysIMEXColumns.FieldName, 
       MSysIMEXColumns.Start, 
       MSysIMEXColumns.Width, 
       MSysIMEXColumns.SkipColumn

FROM MSysIMEXColumns INNER JOIN 
     MSysIMEXSpecs ON MSysIMEXColumns.SpecID = MSysIMEXSpecs.SpecID

ORDER BY MSysIMEXSpecs.SpecName, 
         MSysIMEXColumns.Start, 
         MSysIMEXColumns.Width;

SpecName 字段包含您正在寻找的正确名称!

【讨论】:

干杯!我试试看! 这值得更多的投票,我搜索了所有试图解决这里解释的问题

以上是关于导入 Access 时不存在文本文件规范的主要内容,如果未能解决你的问题,请参考以下文章

将 MSAccess 应用程序中的对象导出为文本对象,并导入新的 MDB

MS Access 中文件的导入循环:如何在每个文件上运行宏并替换临时表的内容

从文本文件导入数据时向预先存在的字典键添加值(Python 3)

使用 VBA 在 Access 中导入 txt 文件 - 日期格式问题 - 导入规范

mysql导入导出文本文件

检查文件夹是不是存在于 Access Continuous Forms 中