プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。今回は、ブック操作のメソッド、Activate、Open、Add、Close、Save、GetOpenFilename、SaveAsなどに加えて、VBAにおける基本的なエラー処理であるOn Error Goto構文について解説【Windows 10、Excel 2016に対応】。
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説する本連載「Excelマクロ/VBAで始める業務自動化プログラミング入門」。前回の「Excelシートの参照、移動、コピー、追加、削除とイベント処理」では、「シートの操作」について解説したが、今回は「ブックの操作」について解説する。
「ブック」とは、前回紹介した「シート」(ワークシート)の集合体だ。Excelで作られる「ファイル」とほぼ同義といえる。ブックはExcelメニューの[ファイル]→[新規]でいくらでも追加できる。
筆者個人の考えとしては、このブックに関する処理をマクロ化する意味は、あまり見当たらない。まだ筆者がVBAに対して初心者であるからかもしれないが、今回のサンプルで紹介しているように、「毎日使用するファイルのボタンを用意して、ボタンをクリックするだけで、必要なファイルが開く」といったマクロは、十分に日常の業務に役に立つだろう。
ブックに関しても、いろいろなマクロがあると思うが、今回は筆者の独断と偏見で、実用的なサンプルだけに絞って解説していく。
最初は、ブックを参照する解説から入る。例えば、図1のように「Book1」「Book2」「Book3」と3つのブックが開いているとする。このブックの中で真ん中に位置している「Book2」をアクティブにしてみよう。
図1の状態から「Book2」をアクティブにするには、リスト1のようなマクロを記述する。
Option Explicit Sub ブックの参照() Workbooks("Book2").Activate End Sub
ブックをアクティブにするにはWorkbooksコレクションのActivateメソッドを使用する。Workbooksコレクションの引数にブックの名前、またはインデックス番号を指定する。リスト1の「Workbooks("Book2").Activate」は「Workbooks(2).Activate」と書いても同じだ。
実行すると、図2のように「Book2」がアクティブになって前面に表示される。
次に、保存しているブックを開いてみよう。
ブックを開くにはOpenメソッドを使用する。書式は下記の通りだ。
Workbooksコレクション.Open FileName:={絶対パス付Excelのファイル名}
ローカルフォルダに保存している「社員売上表.xlsx」ファイルを開くにはリスト2のように記述する。
Sub 社員売上表を開く() Workbooks.Open Filename:="j:\Excel2016Data\社員売上表.xlsx" End Sub
※読者がこのマクロを試す場合は、それぞれの環境のxlsxファイルのパスに変更する必要がある。
このマクロを図3の「社員売上表を開く」ボタンに関連付ける。
[OK]ボタンをクリックし、一度ボタン以外のセルをクリックしてから、再度「社員売上表を開く」をクリックすると、「社員売上表.xlsx」が開く(図4)。
Copyright © ITmedia, Inc. All Rights Reserved.