以下では、「Excelや他システムとのデータ連携(インポート・エクスポート)」をテーマに、Accessを使って外部のファイルやシステムとデータをやり取りする方法を解説します。Excelファイルとのやり取りはもちろん、CSVファイルのインポートや、ODBC連携を活用して他システムと接続するケースなど、初心者でも分かりやすいように手順や注意点をまとめました。
1. はじめに:なぜデータ連携が必要か
業務システムにおいては、Access単体で完結するよりも、ExcelやCSVファイル、さらに他のデータベースなど複数のシステムと連携する場面が多くあります。
- Excelで蓄積されたデータをAccessに取り込んで、分析や帳票出力に活用したい
- Accessで集計した結果をExcelに出力し、他部署と共有する
- 他システム(ERP、会計ソフトなど)で出力されたCSVをインポートし、Accessで管理
- ODBC経由でSQL ServerやOracle、MySQLなど別のDBに接続してデータを参照・更新したい
こうした連携をうまく取り入れると、二重入力やデータのダブル管理が減り、業務効率が向上します。
2. Excelファイルのインポート
2.1 インポート手順
- [外部データ]タブ → [新しいデータソース] → [ファイルから] → [Excel] を選択。
- 参照でExcelファイルを指定し、取り込みモードを選ぶ。
- 「新しいテーブルを作成してデータをインポート」
- 「既存のテーブルに追加」 など。
- ウィザードに従い、シートや名前付き範囲、フィールドの先頭行を見出しとするか、などを指定。
- インポート完了後、新しいテーブルができたり、既存テーブルに追加入力されたりする。
ヒント
- Excelの列見出しにスペースや特殊文字がある場合、テーブルやフィールド名に反映されるので、シンプルな名前にしておくとよい。
- 日付や数値など、データ型の不一致に気をつける(Excelのセル書式が文字列になっていると、Access側で日付として認識できない場合あり)。
2.2 インポート後の整合性チェック
- インポートした結果、余分な空白行や重複データが含まれるケースがある。
- クエリを使って正規化したテーブルに振り分けたり、不整合レコードをチェックすることを推奨。
- 何度も同じExcelファイルを更新する運用なら、**自動化(VBAでTransferSpreadsheetメソッドを呼び出すなど)**も検討しましょう。
3. Excelファイルへのエクスポート
3.1 エクスポート手順
- [外部データ]タブ →[エクスポート]グループ →[Excel] を選択。
- エクスポートしたいテーブルやクエリを選んだ状態で実行すると、保存先のExcelファイルを指定する画面が出る。
- ウィザードに従って完了すると、指定のパスにExcelファイルが作成される。
3.2 応用:ボタン1つでExcel出力
- フォーム上にコマンドボタンを配置し、マクロや**イベントプロシージャ(VBA)**を組むことで、クリック時に
DoCmd.TransferSpreadsheet
を呼び出し、自動でエクスポートさせる方法もある。
- 定期的に出力するレポートやクエリをExcel形式で更新したい場合に便利。
例:VBAコード
Private Sub btnExport_Click()
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _
"クエリ名またはテーブル名", _
"C:\Data\出力ファイル.xlsx", True
MsgBox "Excelファイルにエクスポートしました。", vbInformation
End Sub
acSpreadsheetTypeExcel12Xml
はExcel 2007以降の拡張子 (.xlsx) 用。
- True / False はフィールド名(列見出し)を含むかどうかの指定。
4. CSVやテキストファイルとの連携
4.1 CSVのインポート
- [外部データ]タブ →[テキストファイル] を選択。
- 取り込みたいCSVファイルを参照。
- 区切り文字(カンマ、タブなど)やテキスト区切り文字(” “など)をウィザードで設定。
- 新規テーブルまたは既存テーブルへの追加を選び、フィールド名やデータ型などを確認し完了。
トラブルシュート
- 文字化け: CSVの文字コード(Shift-JIS, UTF-8)が原因。AccessがShift-JISを前提にすることが多いので、事前に文字コードを揃える。
- 日付/数値/Nullの扱い: Excelインポート同様、型不一致が起きやすい。必要ならクエリで変換。
4.2 CSVへのエクスポート
- [外部データ]タブ →[テキストファイル] →[エクスポート]
- 区切り文字やフィールド名の含む/含まないを設定。
- 文字コードを必要に応じて指定する(初期設定だとShift-JISになるケースが多い)。
- VBAで
DoCmd.TransferText
を使うと、ボタン1つで自動エクスポートが可能。
5. 他システムとの連携:ODBCやリンクテーブル
5.1 ODBCドライバで他DBに接続
- [外部データ]タブ →[新しいデータソース] →[ODBCデータベース] から設定。
- DSNファイルやDSNレス接続を使い、SQL ServerやOracle、MySQLなどのDBと連携可能。
- Accessはリンクテーブルとして外部テーブルを扱えるため、あたかもローカルテーブルのようにクエリでJOINしたり更新したりできる。
- 注意: 大量データや複雑JOINの場合、ネットワーク負荷が大きくなるため、パススルークエリやストアドプロシージャを検討。
5.2 SharePointやクラウドとの連携
- SharePointリストをリンクテーブルとして扱ったり、OneDrive上のExcelにアクセスするシナリオもある(ただし速度や同期トラブルに注意)。
- Azure SQL DatabaseとAccessを連携する方法も、ODBC接続やDSNレスで実現可能。
6. 自動化と運用のコツ
- インポート/エクスポートをボタン1つで実行
- フォームに「インポート実行」「エクスポート実行」ボタンを配置し、マクロまたはVBAで
TransferSpreadsheet
/ TransferText
などを呼び出す。
- 手動操作ミスを減らし、ユーザーが簡単に作業できる。
- 定期バッチ化
- Windowsのタスクスケジューラ+VBA呼び出しなどで自動実行。Access自体をコマンドラインで起動し、AutoExecマクロを動かす手法もある。
- 整合性チェック
- インポート直後にクエリで重複排除や必須項目のNullチェックを行うと、後続作業の手戻りが減る。
- 受け入れデータの桁数や日付フォーマットを事前に仕様確認することが大切。
- ログ出力
- どのファイルをいつ取り込んだか、何件取り込んだかをログテーブルに記録しておくと、トラブルシュートが楽になる。
7. まとめ:データ連携で作業効率を向上させよう
- Excelとの連携: インポート/エクスポートのウィザードや
DoCmd.TransferSpreadsheet
で簡単にデータを行き来できる。日々の集計や報告書に便利。
- CSVとの連携: 多様なシステムが出力する形式を取り込み、一元管理する際に必須。文字コードや区切り文字に注意。
- ODBC(他DB連携): Accessをフロントエンドにしながら、SQL ServerやOracleなどをバックエンドDBとして活用。大規模データでもスケーラブルに運用可能。
- 自動化: マクロやVBAを活用し、ボタン1つや定期バッチでデータ連携を実行すれば、作業ミスや工数を削減。
Accessは単なるデスクトップDBにとどまらず、外部ファイルや他DBとのパイプ役にも優れています。適切な連携を整えれば、二重入力や手動更新の手間が激減し、より生産性の高い業務システムを構築できます。ぜひ活用してみてください。
関連記事
これで、ExcelやCSVとのデータ連携の基礎が分かりました。次は、SQL Serverなど本格的なDB連携や、APIを使ったクラウド連携などにも視野を広げてみると良いでしょう。
ABOUT ME

入社した会社では、Accessを活用した基幹システムが長年運用されていました。しかし、開発者の高齢化により保守が困難となり、システムの維持・更新が急務に。
ほぼAccessに触れたことのなかった私は、ゼロから学びながら基幹システムを再構築してみることに。ついにはAccessによるシステム開発エンジニアとしてのスキルを身につけるまでに成長。
元々の業務のノウハウとそれを効率化するためのツール(Access)によって業務効率化システムをいくつも開発してきました。
みなさんの”なにか(業務のノウハウ)”とAccessで業務効率化を実現するお役に立てれば幸いです。