業務において、複数のエクセルファイル間でデータを連携させる必要があることは少なくありません。特に定期的にそのような作業を行う場合、マクロを活用することで大幅な時間短縮が可能です。この記事では、エクセルマクロを使用して別ファイルからデータを取得する方法を詳しく解説します。
エクセルマクロでのデータ取得が有効な作業
別ファイルからデータを取得する具体的な業務として、例えば以下のような作業が想定されます。
- 日次・週次・月次レポートの自動作成
- 複数の部署から集まるデータの統合
- マスターデータと取引データの連携
- バックアップファイルからの情報復旧
- 定期的なデータ更新作業の自動化
このような作業をする場合に、手動でのコピー&ペーストを繰り返すのは効率が悪く、間違いの元にもなります。エクセルマクロを活用することで、正確性を保ちながら作業時間を大幅に削減することができます。
エクセルマクロを使用するための準備
「開発」タブの表示
VBAのコードを作成していくためには、エクセルで「開発」タブを表示しておいた方がよいので、準備としてその設定を行っておきましょう。
別ファイルからデータを取得する具体例
さて、準備ができたらいよいよマクロを作っていきます。
具体的なVBAコードとともに、別ファイルからデータを取得するマクロをいくつかご紹介していきます。
1. Workbooks.Openを使用する方法
シンプルな方法として、VBAでファイルを直接開き、データを取得した後、必要に応じてファイルを閉じるやり方です。
Sub GetDataFromAnotherFile()
Dim srcBook As Workbook
Dim destSheet As Worksheet
' 取得先のブックを開く
Set srcBook = Workbooks.Open("C:\test\
book1.xlsx")
Set destSheet = ThisWorkbook.Sheets("Sheet1")
' データをコピー
srcBook.Sheets("Sheet1").Range("A1:A10").Copy
destSheet.Range("A1").PasteSpecial xlPasteValues
' 開いたブックを閉じる(保存しない)
srcBook.Close False
End Sub
このマクロを実行すると、Cドライブの「test」というフォルダに入っている「book1.xlsx」というファイルのA1~A10セルの値を転記することができます。

2. ADOを使用する方法
ADO(ActiveX Data Objects)を使用して、データベースのようにExcelファイルに接続する方法です。
Sub GetDataUsingADO()
C:\test\book1.xlsx
' 参照設定が必要: Microsoft ActiveX Data Objects x.x Library
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim destSheet As Worksheet
Dim strConn As String
Dim i As Integer, j As Integer
Set destSheet = ThisWorkbook.Sheets("Sheet1")
' 接続文字列を設定
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
"Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
' 接続を開始
Set conn = New ADODB.Connection
conn.Open strConn
' クエリを実行
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM [Sheet1$A1:A10]", conn, adOpenStatic, adLockReadOnly
' データをシートに貼り付け
For i = 0 To rs.Fields.Count - 1
destSheet.Cells(1, i + 1) = rs.Fields(i).Name
Next i
destSheet.Range("A2").CopyFromRecordset rs
' 接続を閉じる
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
End Sub
このマクロを実行すると、先ほどと同じくCドライブにある「test」フォルダの「book1.xlsx」ファイルA1~A10セルの値がコピーされます。

よくあるエラーと対処法
1. ファイルパスのエラー
「ファイルが見つかりません」というエラーが発生する場合
- パスが正しいか確認(バックスラッシュの使用)
- ファイル名に特殊文字が含まれていないか確認
- 絶対パスではなく相対パスの使用を検討
2. 参照設定の問題
ADOを使用する場合に「オブジェクトが定義されていません」というエラーが出る場合
- VBEの「ツール」→「参照設定」で必要なライブラリを選択
3. セキュリティの警告
マクロの実行時にセキュリティ警告が出る場合
- マクロセキュリティの設定を確認
- ファイルを信頼できる場所に保存
4. データ型の不一致
取得したデータの型が予期しないものになる場合
- PasteSpecialメソッドで適切な貼り付けオプションを指定
- 明示的に型変換を行う
実践的な活用シーン
日次レポートの自動生成
毎日異なるファイルから特定のデータを抽出し、レポートを自動生成できます。例えば、複数店舗の売上データを集約して本社の日報を作成するケースなど。
マスターデータの同期
商品マスター、顧客マスターなどの基本データを、複数のファイルで同期させることができます。これにより、データの一貫性を保つことが可能になります。
データバックアップと復元
定期的にデータをバックアップして別ファイルに保存したり、必要に応じて復元したりするプロセスを自動化できます。
まとめ
エクセルマクロを使用して別ファイルからデータを取得する方法は、業務効率化の強力なツールとなります。この記事で紹介した方法を参考に、用途に応じて最適なマクロを組んでみましょう!
最適なマクロを組むことができれば、日々の作業時間を大幅に削減し、ミスも減らすことができますので、是非自分だけの便利なマクロツールを作成してみてください。