2012-03-06 15 views
4
私が書いているいくつかのVBAコードの

一部が使用して保存されたインポートを呼び出して存在する場合にどのようにチェックします:保存されたインポートがVBA

DoCmd.RunSavedImportExport "import_name" 

これは、保存されたインポートがない場合を除いて、私のために非常によく働いています存在しない。その場合、それは黙って失敗します。

インポート定義が存在するため、エラーが発生する可能性があるかどうかを確認する方法はありますか?

私はAccess 2010を使用していますが、2003年にも動作する必要があります。

+1

することを避けるためでしょうAccess 2007:[DoCmd.RunSavedImportExportメソッド](http://msdn.microsoft.com/en-us/library/bb243760(v=office.12).aspx) "**追加されたバージョン:** Access 2007" – mwolfe02

+0

Ah 、ありがとう。私はテストまで知らなかったでしょう... – jasongetsdown

+0

親指をありがとう。私はAccess 2002でテストしたより一般的なソリューションを投稿しました。 –

答えて

3

この問題(アクセス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コマンドを使用します。

それらが保存されているAccess 2003で
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 
0

隠された "MSysIMEXSpecs"システムテーブルで、これがそれ以降のバージョンに残っているかどうかはわかりませんが、もしそうなら、標準SQLで見ることができます:

SELECT * FROM MSysIMEXSpecs 

列名が「SpecName」であるので、これはおそらく、よりフィットです:

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

これは、それは `DoCmd.RunSavedImportExport`がで追加されたアクセス2003で動作しませんトラップエラーの

関連する問題