如何检查VBA是否存在已保存的导入

时间:2012-03-06 16:29:35

标签: ms-access access-vba ms-access-2010

我写的一些vba代码的一部分使用:

调用保存的导入
DoCmd.RunSavedImportExport "import_name"

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

有没有办法检查导入定义是否存在,以便我可以引发错误或采取其他操作,如果不存在?

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

2 个答案:

答案 0 :(得分:3)

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

Sub Importer()
On Error GoTo ErrImport

DoCmd.RunSavedImportExport "import_name"

ExitImporter:
  Exit Sub

ErrImport:
  MsgBox Error 'Err = 31602 for missing import specification
  Resume ExitImporter

End Sub

更通用的解决方案使用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

答案 1 :(得分:0)

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

SELECT * FROM MSysIMEXSpecs

列名是“SpecName”,所以这可能更合适:

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

这样可以避免陷阱错误