エクセルVBA超入門講座(第5回)別シート、別ファイル操作方法

excel-vba-lecture05 Excelマクロ

これまでの講座でセルの操作方法の基本について解説しました。

今までは同じExcelファイルの、同じシートのセルの操作のみに焦点を絞っていました。

マクロを使うと別のファイルや別のシートへの操作を行うことも可能です。

今日はその方法について解説します。

別シートを操作する方法

別のシートを操作する方法を解説します。

今選択しているシートのA1セルに文字を入れるマクロは次のように記載していました。

selected-sheet

現在「Sheet1」シートを選択中で、このときマクロを実行すると、実行結果は次のようになります。

selected-sheet-result

別のシートを操作する場合、次のように記載します。

another-sheet

実行結果は次のようになります。

another-sheet-result

現在「Sheet1」を選択している場合でも別のシート「Sheet2」の操作が可能になります。

このように、別のシートを操作する場合はシート名を追加してVBAでは次のように記述します。

Sheets(“シート名“).オブジェクト名.プロパティ

上の例に当てはめると、以下の記述になります。

Sheets(“Sheet2“).Range(“A1”).Value = “別シートのセルを操作する”

天馬先生
天馬先生

このように明示的にシート名を記述することで別のシートを操作出来るようになるよ

天馬先生
天馬先生

違うシートを選択中にマクロを実行すると「間違って別のシートのデータを上書きしちゃった」なんて事にもなるので、シート名は記述する癖をつけよう!

たけし
たけし

確かに保存してないデータが上書きされたら悲惨ですね(笑)

シート名は記述するように心がけます!

別ファイルを操作する方法

次に別のファイルを操作する方法を解説します。

大きく2つの方法があります。

  • 現在開かれているExcelファイルに対して操作する方法
  • 新たに別のExcelファイルを開いて操作する方法

1つずつ解説していきます。

現在開かれているExcelファイルに対して操作する方法

次のような売上情報のExcelファイルを、マクロファイルとは別で開いているとします。

another-file-before

このとき次のマクロを実行します。

another-file2

マクロ実行結果は次のようになります。

another-file-after

マクロファイルとは別のExcelファイルを操作出来ました。

このように、別のファイルを操作する場合はファイル名+シート名を追加してVBAでは次のように記述します。

Workbooks(“ファイル名“).Sheets(“シート名”).オブジェクト名.プロパティ

上の例に当てはめると、以下の記述になります。

Workbooks(“売上情報.xlsx“).Sheets(“売上一覧”).Range(“A2”).Value = “佐藤一郎”

新たに別のExcelファイルを開いて操作する方法

今開いているExcelファイルを操作するよりも、開かれていないファイルを操作する機会の方が多いと思います。

別のファイルを新たに開いて操作する方法を解説します。

天馬先生
天馬先生

少しややこしいけど、順番に丁寧に解説していきますので、ぜひしっかり学んでくださいね。

ファイルを開く

まずは操作対象のExcelファイルを開きます。

VBAでは次のように記載します。

Workbooks.Openファイルパス

具体的な例で見てみましょう。

処理対象のファイル(売上情報.xlsx)がDドライブの下の「売上情報」というフォルダにあったとします。

file-folder

この場合、VBAで次のように記載します。

Workbooks.OpenD:¥売上情報¥売上情報.xlsx

D:¥は「Dドライブ」を意味します。

「ファイルのパスの方法が分からない」という方は次のようにフォルダにカーソルをあててみて下さい。

designate-folder

するとフォルダ名が青く反転するので、そのままフォルダ名をキーボードの「Ctrl」+「C」キーでコピーします。

D:¥売上情報」がコピーされるので、その後ろにフォルダを意味する「¥」を追加し、その後ろにファイル名「売上情報.xlsx」を追加します。

まとめて書くと

D:¥売上情報¥売上情報.xlsx

となります。

ファイルパスについては別の講座でも詳しく解説します。

処理を記載する

Excelファイルが開けたら、そのファイルに対して行う処理を記載します。

これは現在ファイルを開いている場合と同じです。

例では次の記載をしています。

Workbooks(“売上情報.xlsx”).Sheets(“売上一覧”).Range(“A2”).Value = “佐藤一郎”
Workbooks(“売上情報.xlsx”).Sheets(“売上一覧”).Range(“B2”).Value = “スニーカー”
Workbooks(“売上情報.xlsx”).Sheets(“売上一覧”).Range(“C2”).Value = “6,500”
Workbooks(“売上情報.xlsx”).Sheets(“売上一覧”).Range(“D2”).Value = “2”
Workbooks(“売上情報.xlsx”).Sheets(“売上一覧”).Range(“E2”).Value = “13,000”

ファイルを保存する

処理が実行出来たらファイルを保存します。

VBAでは次のように記載します。

Workbooks(“ファイル名”).Save

今回の例では次のように記述します。

Workbooks(“売上情報.xlsx”).Save

これは現在開いているファイルか、新たにファイルを開いて処理するかにか関わらず、同じ記述になります。

ファイルを閉じる

ファイルの保存が出来たら最後にファイルを閉じましょう。

VBAでは次のように記載します。

Workbooks(“ファイル名”).Close

今回の例では次のように記述します。

Workbooks(“売上情報.xlsx”).Close

現在処理中のファイルを保存、閉じる

ファイル名を直接記載して、ファイルの保存を行ったり、ファイルを閉じる操作を解説しました。

現在処理中のファイルに対して操作することも可能です。

その時使うのが「ActiveWorkbook」です。

VBAで次のように記述します。

  • ファイルを保存する場合:ActiveWorkbook.Save
  • ファイルを閉じる場合:ActiveWorkbook.Close
たけし
たけし

ActiveWorkbookを使えばいちいちファイル名を書かなくても良いから便利ですね!

天馬先生
天馬先生

便利な反面、デメリットもあるよ

例えばマクロ実行中に他のExcelファイルを選択すると、「現在処理中」のファイルに対して操作するので、別のファイルが操作されてしまう危険性があります。

天馬先生
天馬先生

それを防ぐために、ActiveWorkbookを使う前には、処理対象のファイルをきちんと指定する癖をつけよう

このとき使うのが「Activate」です。

特定のファイル名をアクティブにするという意味合いがあります。

VBAで次のように記述します。

Workbooks(“ファイル名”).Activate

ファイルの保存、閉じる操作とまとめて記述すると次のようになります。

Workbooks(“売上情報.xlsx”).Activate
ActiveWorkbook.Save
ActiveWorkbook.Close

  1. 売上情報.xlsをアクティブにして
  2. アクティブ(現在処理中)ファイルを保存し
  3. アクティブ(現在処理中)ファイルを閉じる

といった流れになります。

一連の処理を見てみよう

ここまで解説した内容を1つのマクロに記述すると次のようになります。

another-file4

ActiveWorkbookを用いた記述は次のようになります。

another-file3

流れとしては以下になります。

  1. 処理対象のファイルを開く(※すでに開かれている場合は省略)
  2. ファイルに対する処理を記載する
  3. ファイルを保存する
  4. ファイルを閉じる
天馬先生
天馬先生

ファイルの操作方法は分かったかな?

たけし
たけし

一連の流れがつかめました!自分にも出来る気がします!

天馬先生
天馬先生

やり方が分かったら、ぜひ自分で簡単なマクロを作ってみましょう!

まとめ

今回は別のファイルや、シートを操作する方法について解説しました。

マクロを使う上で頻繁に使用します。

今回の講座の内容をしっかりとおさえ、まずは自身で簡単なマクロを作って身をもって学んでみてください。

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

~天然マクロ学校~

コメント

タイトルとURLをコピーしました