部分調用使用保存的導入:這是工作如何檢查是否已保存的進口與VBA存在
DoCmd.RunSavedImportExport "import_name"
相當好對我來說,當保存的進口呢,除了不存在。在那種情況下,它默默地失敗。
有沒有辦法來檢查導入定義是否存在,以便我可以提出錯誤或採取其他行動,如果它不?
我使用Access 2010,但它也需要在2003年工作。
部分調用使用保存的導入:這是工作如何檢查是否已保存的進口與VBA存在
DoCmd.RunSavedImportExport "import_name"
相當好對我來說,當保存的進口呢,除了不存在。在那種情況下,它默默地失敗。
有沒有辦法來檢查導入定義是否存在,以便我可以提出錯誤或採取其他行動,如果它不?
我使用Access 2010,但它也需要在2003年工作。
提供和錯誤處理程序來解決這個問題(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
在Access 2003中它們被存儲在隱藏的「MSysIMEXSpecs」系統表中,不確定這是否保留在更高版本中,但如果是這樣,則可以使用標準SQL查看它:
SELECT * FROM MSysIMEXSpecs
列名是「SpecName」所以這可能是更合適:
SELECT * FROM MSysIMEXSpecs WHERE SpecName = 'Your Spec Name'
這將避免陷阱錯誤的
它不會在Access 2003中工作'在加入DoCmd.RunSavedImportExport' Access 2007:[DoCmd.RunSavedImportExport方法](http://msdn.microsoft.com/en-us/library/bb243760(v = office.12).aspx)「**版本增加:** Access 2007」 – mwolfe02 2012-03-06 16:44:25
啊, 謝謝。我不知道,直到測試... – jasongetsdown 2012-03-06 17:01:12
感謝豎起大拇指。我發佈了一個更通用的解決方案,我使用Access 2002進行了測試。 – 2012-03-06 18:03:04