ACCESS インポートをエラーをVBAで検知する方法

インポートをエラーをVBAで検知する方法

ACCESSにExcelやcsvファイルをインポートする際、データ型の違いなどでエラーが出ることが良くあります。
手動でインポートしていれば、インポートエラー発生時にエラーテーブルが作成されるので分かるのですが、VBAでインポート処理を作っているとインポートエラーに気づくことが難しくなります。

そこで、今回はインポートをエラーをVBAで検知する方法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。

インポートエラーの検知方法

ACCESSでは外部からファイルをインポートした際、エラーが発生するとエラー内容が記載されたインポートエラーテーブルが自動生成されます。
そのため、インポート処理後に名前に「インポート エラー」が含まれるテーブルの有無をチェックすることでインポートエラーが発生したか否かを判断することができます。

ACCESSのインポートエラー

ExcelやcsvからACCESSにデータをインポートする際、インポートがうまくいかないケースがあります。
原因として一番多いのがデータ型の違いですね。

例えば、ACCESSでは数値型として設定しているフィールドに、テキスト型のデータをインポートするとエラーとなってしまいます。
インポートを手動で行っている場合は、インポートエラーをメッセージで知ることができます。

また、インポートエラーテーブルが自動で作成されるので、どのレコードの何が悪かったのかを知ることもできます。

VBAでのインポートエラー

一方でVBAでインポート処理を作成していると、こうしたエラーへの対処が難しくなります。
上記と同じテーブル、同じインポートファイルを使って、VBAでインポートを行う処理を作成しました。

上記のプロシージャで同じcsvファイルをインポートするとインポートエラーテーブルは作成されるのですが、エラーメッセージが表示されません。

これでは、利用者がインポートエラーに気づけずに困ってしまいますね。

インポートエラーを検知するVBAのプロシージャ

そこで、インポートエラーを検知するプロシージャを作成しました。
上記の通りインポートエラーが発生するとエラーテーブルが生成されます。

そのため、エラーテーブルの有無をチェックし、エラーテーブルが存在した場合はアラートを表示した上で、エラーテーブルを削除するという処理をしています。

コードを解説します。まず、

の部分で、ACCESSデータベース内に存在するすべてのテーブルに対してループ処理を実行しています。
その上で、

の部分で、If文を使ってテーブル名に「インポート エラー」が含まれるテーブルがあるかどうかを判定しています。
このテーブルがあった場合に、インポートエラーが発生したと判定しているわけです。

その後、

でインポートエラーテーブルを削除しています。
実際の運用では、ここでメッセージボックス関数でインポートエラーが発生した旨のメッセージを表示し、中途半端にインポートされたテーブル内のデータを削除しておくのが良いでしょう。

以上、インポートをエラーをVBAで検知する方法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。