我写的一些vba代码的一部分使用:
调用保存的导入DoCmd.RunSavedImportExport "import_name"
这对我来说非常有效,除非保存的导入不存在。在那种情况下,它会无声地失败。
有没有办法检查导入定义是否存在,以便我可以引发错误或采取其他操作,如果不存在?
我正在使用Access 2010,但它也需要在2003年使用。
答案 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'
这样可以避免陷阱错误