未分類

【便利】エクセルマクロで別ファイルからデータを取得する方法

業務において、複数のエクセルファイル間でデータを連携させる必要があることは少なくありません。特に定期的にそのような作業を行う場合、マクロを活用することで大幅な時間短縮が可能です。この記事では、エクセルマクロを使用して別ファイルからデータを取得する方法を詳しく解説します。

エクセルマクロでのデータ取得が有効な作業

別ファイルからデータを取得する具体的な業務として、例えば以下のような作業が想定されます。

  • 日次・週次・月次レポートの自動作成
  • 複数の部署から集まるデータの統合
  • マスターデータと取引データの連携
  • バックアップファイルからの情報復旧
  • 定期的なデータ更新作業の自動化

このような作業をする場合に、手動でのコピー&ペーストを繰り返すのは効率が悪く、間違いの元にもなります。エクセルマクロを活用することで、正確性を保ちながら作業時間を大幅に削減することができます。

エクセルマクロを使用するための準備

「開発」タブの表示

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()
' 参照設定が必要: 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=
C:\test\book1.xlsx" & _
"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メソッドで適切な貼り付けオプションを指定
  • 明示的に型変換を行う

実践的な活用シーン

日次レポートの自動生成

毎日異なるファイルから特定のデータを抽出し、レポートを自動生成できます。例えば、複数店舗の売上データを集約して本社の日報を作成するケースなど。

マスターデータの同期

商品マスター、顧客マスターなどの基本データを、複数のファイルで同期させることができます。これにより、データの一貫性を保つことが可能になります。

データバックアップと復元

定期的にデータをバックアップして別ファイルに保存したり、必要に応じて復元したりするプロセスを自動化できます。

まとめ

エクセルマクロを使用して別ファイルからデータを取得する方法は、業務効率化の強力なツールとなります。この記事で紹介した方法を参考に、用途に応じて最適なマクロを組んでみましょう!

最適なマクロを組むことができれば、日々の作業時間を大幅に削減し、ミスも減らすことができますので、是非自分だけの便利なマクロツールを作成してみてください。

  • この記事を書いた人

いしはらゆうと

実務エクセルのプロ
パソコンが使えず全く仕事ができなかったことから猛勉強し、 各部署から頼りにされるレベルになりついにはSEに。
マクロを活用し、2人がかりで1日の仕事を1人×30分に短縮。 自身の経験から、最短で学ぶことのできるエクセル学法をノウハウ化し数十名以上にオンライン講座を開講。
現在は「瞬習エクセルアカデミー」として実務に必要なスキルをスキマ時間で学ぶことのできるオンラインスクールを運営中。
元SE
国家資格:応用情報技術者

-未分類