ACCESSにはExcelやcsvなどの様々なファイルからデータを取り込むことが可能です。
その中でもよく利用するのはExcelからのデータ取り込みではないでしょうか。
ExcelファイルのインポートはACCESSの機能を使って手動で行うこともできますが、何度も行うのであれば自動化してしまうのが便利です。
今回は、ACCESS VBAを使って、ExcelファイルをACCESSに自動インポートする機能の開発事例をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSで実際に作成したフォームやレポートを、その作成方法と共にご紹介していきます。
完成形
最初にExcelファイルインポート機能の完成形を紹介します。

非常に簡単な、ボタンが1つだけのフォームです。
インポートボタンを押すことで、Excelファイルを指定したテーブルに取り込むようにしてあります。
インポート対象のテーブルは以下のTMP_売上です。

ご覧のようにレコードは入っておらず、空の状態です。
ここでフォームのインポートボタンを押してみます。

ファイル選択ダイアログが表示されますので、インポートするExcelファイルを選択します。

インポート処理終了のメッセージが表示されます。
ここで、先ほどのTMP_売上テーブルを見てみましょう。

上記のようにテーブルにレコードが登録されていることが分かります。
これが、インポート機能の一通りの流れです。
フォームの作成
では、作成方法に入ります。
まずはフォームをデザインビューで見てみましょう。

インポートボタンのクリック時イベントに、イベントプロシージャを設定してあります。
このイベントプロシージャでインポート処理をさせています。
VBAプログラミング
では、インポートボタンに設定したVBAのプロシージャを紹介します。
Private Sub インポート_ボタン_Click()
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "TMP_売上", get_file_name(""), True
MsgBox "インポートが終了しました。", vbInformation + vbOKOnly, "インポート終了"
End Sub
DoCmd.TransferSpreadsheetメソッドを使って、Excelファイルの取込を行うプロシージャです。
TMP_売上にExcelファイルからインポートを行うように指示しています。
DoCmd.TransferSpreadsheetメソッドに関して詳しく知りたい方は、以下の記事もご覧ください。

なお、4つ目の引数にはget_file_name("")という指定をしています。
これは、別途作成したエクスプーラーからファイルを選択し、選択したインポートファイルのフルパスを返すファンクションプロシージャです。
詳しいプロシージャの内容や作成方法は以下の記事をご覧ください。

そして、インポート処理後にMsgBox関数で取込終了のメッセージを出しています。
インポート処理が終了がユーザーから分かりにくいため、処理終了時にメッセージを出すようにしておくとわかりやすいでしょう。
以上、Excelファイル自動インポート機能をご紹介しました。
この記事の内容を実際に試したい方へ
本記事の内容を実際にACCESSを動かしながら確認したいという方向けに、記事で紹介した機能が実装されたサンプルファイルを販売しています。記事内で解説しているテーブル、クエリ、フォーム、レポート、VBAのプロシージャなどをそのまま動く形で実装しました。
学習用としてはもちろん、加工して自社業務に利用することも可能です。
ご興味のある方は以下からご覧ください。

ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に300以上のACCESSデータベースの開発・修正実績のあるはこにわガジェット(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

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