【问题标题】:Microsoft office Access database engine could not find the objectMicrosoft Office Access 数据库引擎找不到对象
【发布时间】:2012-06-23 07:51:28
【问题描述】:

我创建了一个测试 MS Access DB 来将表格导出到 Excel 和一个文本文件。

这适用于 Excel:

DoCmd.OutputTo acOutputQuery, "QryExportToExcel", _
acFormatXLS, XFile, False

对于文本文件,我创建了一个规范并使用了这段代码

DoCmd.TransferText acExportDelim, "Mytable Import Specification", "mytable", "D:\myfolder\test1.txt", False

在错误消息中,我得到 "test1#txt"

Microsoft Office Access 数据库引擎找不到对象
“test1#txt”。确保对象存在并且您拼写了它的名称
和正确的路径名。

我尝试在同一路径中创建 test1.txt。令我惊讶的是,这删除了已经存在的文件。

软件:MS ACCESS 2007

【问题讨论】:

  • 抱歉 HansUp FileDir 是“D:\myfolder\”。为了方便起见,我在这个问题中硬编码了路径。
  • 哦,是的,你是对的。规范名称有问题。如果我删除那个我可以导出。但我需要一个用于此导出的分隔符​​。没有 SpecicationName 我怎么能做到。有代码吗?
  • 嘿HansUp 我得到了错误的人。这是因为我正在使用导入规范来导出文件。所以我删除了它并给出了一个出口规范名称
  • 您正在导出一个分隔文件,您真的需要一个规范吗?你的分隔符是非标准的吗?

标签: ms-access ms-access-2007 vba


【解决方案1】:

Microsoft Office Access 数据库引擎找不到对象“test1#txt”。确保对象存在并且正确拼写其名称和路径名。

这是一个通用的(相当无用的)错误消息,Access 会在 anything 出错时输出。一个示例是导入/导出规范中的字段名称拼写错误。

您可以通过在 Access 用户界面中“手动”尝试导入操作(而不是通过代码)来获得“真正的”错误消息。

【讨论】:

    【解决方案2】:

    问题作者报告的问题是“因为我正在使用导入规范来导出文件。”

    他们通过使用导出规范解决了问题。

    【讨论】:

      【解决方案3】:

      因为您正在执行 DoCmd.TransferText,所以 Access 期望文件 Test1.txt 存在于该位置。尝试先创建文件,然后传输文本。

      您可以在导出之前尝试使用此代码来创建文件:

      Public Sub CreateExportFile()
       Dim strFileName As String
       Dim SomeStringToOutput
      
       strFileName = "d:\myfolder\test1.txt"
       Open strFileName For Output As #1
      
      End Sub
      

      【讨论】:

        【解决方案4】:

        我遇到了类似的情况,发现目标文件夹中有一个文件 schema.ini。这是在之前执行 acExportMerge 时创建的,它会导致此错误。确保在执行新的 TransferText 之前已删除该文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多