Ms access 如何使用VBA检查保存的导入是否存在

Ms access 如何使用VBA检查保存的导入是否存在,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我正在编写的某些vba代码的一部分使用以下方法调用保存的导入: DoCmd.RunSavedImportExport "import_name" 这对我来说非常有效,除非保存的导入不存在。在这种情况下,它会无声地失败 是否有方法检查导入定义是否存在,以便在不存在时引发错误或采取其他操作 我正在使用Access 2010,但它也需要在2003年工作。提供和错误处理程序来解决此问题(Access 2007及更高版本): 更通用的解决方案使用TransferText命令,如下所示: Sub Impo

我正在编写的某些vba代码的一部分使用以下方法调用保存的导入:

DoCmd.RunSavedImportExport "import_name"
这对我来说非常有效,除非保存的导入不存在。在这种情况下,它会无声地失败

是否有方法检查导入定义是否存在,以便在不存在时引发错误或采取其他操作


我正在使用Access 2010,但它也需要在2003年工作。

提供和错误处理程序来解决此问题(Access 2007及更高版本):

更通用的解决方案使用TransferText命令,如下所示:

Sub Importer()
    On Error GoTo ErrImport

DoCmd.TransferText acImportDelim, "Import_file Import Specification", "import_file", "import_file.txt", False

ExitImporter:
  Exit Sub

ErrImport:
    MsgBox "Error Number = " & Err & ", Message=" & Error ' Error 3011 indicates import_file.txt not found
    Resume ExitImporter

End Sub

在Access 2003中,它们存储在隐藏的“MSysIMEXSpecs”系统表中,不确定这是否保留在更高版本中,但如果保留,则可以使用标准SQL查看:

SELECT * FROM MSysIMEXSpecs
列名为“SpecName”,因此这可能更合适:

SELECT * FROM MSysIMEXSpecs WHERE SpecName = 'Your Spec Name'

这将避免捕获错误

它在Access 2003中不起作用
DoCmd.RunSavedImportExport
是在Access 2007中添加的:“版本添加:Access 2007”啊,谢谢。在测试之前我不会知道…谢谢你的大拇指。我发布了一个更通用的解决方案,我使用Access 2002进行了测试。最后,导入规范并不是真的必要,所以我使用了“DoCmd.TransferSpreadsheet”,它可以跨版本工作。
SELECT * FROM MSysIMEXSpecs WHERE SpecName = 'Your Spec Name'