「複数のファイルをいったりきたりしてデータをまとめる作業が頻繁にあるんだよなぁ。」
「VBAで自動化したいけど、ファイルの移動方法がよくわからない。」
この記事ではそんな悩みを解決するために、VBA実行中にファイル間を移動(アクティブなファイルを変更)する方法をご紹介します。
やり方を説明するだけではなく、実際の適用事例まで紹介していますので、初心者でもわかりやすい内容となっています。
ぜひ最後までご覧ください。
それでは早速やっていきましょう!
VBA実行中にファイル間を移動する方法
ここでは今回の記事の要点である、VBA実行中にファイル間を移動するをまとめています。
基本的には以下の手順をVBAに組み込むことでファイル間の移動が可能になります。
①各ファイルのファイル名を宣言する。
まずは以下のような手法を用いてファイル名をマクロに覚えさせます。
****=ThisWorkbook.Name
⇒今開いているファイルを宣言する。
****=”〇〇〇.xlsx”
⇒直接ファイル名を宣言する。
※移動するファイルはすべて宣言しておく必要があります。
②Workbooks(①で宣言した名前).Activateでファイルを移動する。
Workbooks(****).Activate
でアクティブなファイルを変更することが可能です。
基本的にやらなければいけないことはこれだけです。
複雑なデータ処理を行う際は、ファイルの移動というのは頻繁に行いますので、ぜひ覚えておきましょう。
とはいえ、初心者の人はこれだけではよくわからないと思いますので、実際の使用例も紹介していきます。
例題確認
今回は商品と値段が記載されているBook1から、Book2に記載されている商品を探しだし、その値段をコピーしてくるという処理を行ってみたいと思います。
⇒Book2ファイルのB2セルに253が入力されれば成功ですね。
例題を確認できたところで、次はマクロの記述を行っていきましょう。
マクロの記述方法がわからない、という方は以下の記事を参考にしてください。
ファイル間でのデータやりとりコード
今回はBook2でマクロを動かしますので、Book2(データを収集する方のファイル)でコードを記述してください。
以下が今回作成したコードです。
Sub データ検索()
'変数の型を宣言
Dim kensaku As String
Dim database As String
Dim shohin As String
Dim nedan As String
kensaku = ThisWorkbook.Name
database = "Bool1.xlsx"
'商品名をマクロに記録する
Workbooks(kensaku).Activate
shohin = Cells(2, 1)
'Book1から商品名を探す
Workbooks(database).Activate
Do Until Cells(2 + i, 1) = shohin Or i > 10
i = i + 1
Loop
'探した商品の値段をマクロに記録する
nedan = Cells(2 + i, 2)
'Book2に戻って記入する
Workbooks(kensaku).Activate
Cells(2, 2) = nedan
End Sub
マクロの処理内容は以下の通りです。
①各ファイル名をマクロに記憶させる
②Book2に記載されている、探したい商品名をマクロに記憶させる
②Book1に移動する
③探したい商品名をDo loop を使って探す
(商品名がなかった場合、ずっと探し続けてしまうので10回までの制限つきにしています。検索もとのデータ数に応じて適宜書き換えてください。)
④商品の値段をマクロに記憶させる
⑤Book2に移動する
⑥B2セルに先ほど記憶させた商品の値段を記入する
記述が終わりましたら早速、マクロを実行してみましょう。
以下が実行結果です。
ねらい通りB2セルに253と記入されていますね。
おわりに
というわけで今回はVBAの実行中にファイル間を移動する方法についてご紹介しました。ぜひマスターし、日々の業務に生かしていただけると幸いです。
このブログではエクセルを中心に、様々な業務効率化スキルを紹介しています。
■生産性の低いことはやりたくない。
■早く帰ってもっと子供と遊びたい。
こんな人はぜひ他の記事も読んでみてください。
きっとお役に立てるはずです。
最後に・・・
このブログはブログ村に参加しています。
この記事が役にたった、今後もいろんなスキルを紹介してほしい、という方は以下のボタンをポチって頂けると私のモチベーションがあがりますのでよろしくお願いします。
また、Twitterもやっていますので興味があれば覗いてみてください。
それではまた!!
関連記事
コメント