导入 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)