Excelブックの操作とイベント処理&VBAのエラー処理:Excelマクロ/VBAで始める業務自動化プログラミング入門(10)(2/4 ページ)
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。今回は、ブック操作のメソッド、Activate、Open、Add、Close、Save、GetOpenFilename、SaveAsなどに加えて、VBAにおける基本的なエラー処理であるOn Error Goto構文について解説【Windows 10、Excel 2016に対応】。
Addメソッドでブックの追加
次は「ブックを追加する」マクロを紹介しよう。これも「新規ブックの追加」というボタンを作っておき、これにマクロを追加しておくと、ボタンクリックだけで、新規ブックが追加されていく。これも日常の業務には役に立つ処理だと思う。
ブックを追加するには、Addメソッドを使用する。書式は下記の通りだ。
Addメソッドの書式
Workbooksコレクション.Add
ブックを追加するマクロはリスト3のようになる。
Sub ブックの追加() Workbooks.Add End Sub
このマクロを「ブックの追加」というボタンに登録する。すると、このボタンをクリックすると図5のように新規ブックが追加される。
次に、先ほど開いていた「社員売上表.xlsx」ブックを閉じてみよう。
Closeメソッドでブックを閉じる
ブックを閉じるにはCloseメソッドを使用する。Closeメソッドの書式は下記の通りだ。
Closeメソッドの書式
Workbooksコレクション({閉じるExcelのファイル名}).Close
「社員売上表を閉じる」ボタンを作成し、リスト4のマクロを登録する。
Sub ブックを閉じる() On Error GoTo myError Workbooks("社員売上表.xlsx").Close Exit Sub myError: MsgBox "社員売上表は開いていません。" End Sub
ここで重要なのは、「社員売上表.xlsx」が開いていないときに、「社員売上表を閉じる」ボタンをクリックするとエラーが発生するため、「社員売上表.xlsx」が開いているときは閉じて、開いてないときは「開いていません」のメッセージボックスを表示させることだ。
重要! Excel VBAのエラー処理
On Error Goto構文でエラーが発生したときにmyErrorの行に制御を移している。myErrorでは警告メッセージを表示させる処理を行っている。
以下は、On Error Goto構文の書式だ。
On Error Goto {myError}
{処理}
Exit Sub
{myError}:
{エラー処理}
単純に開いたファイルを閉じるだけならCloseメソッドを記述するだけでいいが、プログラムの場合は、開いていないときでも、ボタンをクリックする可能性があるので、そういった場合の処理もきちんと書いておくことが大切だ。
リスト4のマクロを「社員売上表を閉じる」ボタンに登録して実行すると、図6のようになる。
ブックを「開く」「閉じる」と来たら、次はブックの保存をとなるのが順番だ。ブックの保存をマクロ化してみよう。
Saveメソッドでブックの保存
ブックを保存するにはSaveメソッドを使用する。ブックの上書き保存が可能だ。書式は下記の通りだ。
Saveメソッドの書式
Workbookオブジェクト.Save
現在アクティブになっているブックを保存するには、下記のように記述するだけでいい。
ActiveWorkbook.Save
この記述だけで、アクティブになっているブックが上書き保存される。
ブックの保存はこの程度にして、次は「ファイルを開く」ダイアログボックスでブックを開いてみよう。
GetOpenFilenameメソッドを使って、ダイアログボックスでブックを開く
ダイアログボックスでブックを開くにはGetOpenFilenameメソッドを使用する。書式は下記の通りだ。
GetOpenFilenameメソッドの書式
Application.GetOpenFilename({ファイルフィルター})
{ファイルフィルター}には、ファイルの種類を指定する文字列と、表示するファイルの拡張子(ワイルドカード(*)も可)をセットにして指定する(省略可)。
マクロはリスト5のようになる。
Sub ファイルを開くダイアログボックス() Dim openFile As String openFile = Application.GetOpenFilename("Excelブック,*.xlsx") If openFile = "False" Then Exit Sub Else Workbooks.Open openFile End If End Sub
文字列型変数openFileを宣言する。GetOpenFilenameでファイルの種類を「Excelブック」とし拡張子が「*.xlsx」と指定して.xlsxファイルのみを表示するようにする。それらのファイルをopenFile変数に格納する。ダイアログで[キャンセル]されたときは処理を抜け、それ以外の場合は、Openメソッドで指定されたExcelブックファイルを開く。
このマクロを「ファイルを開く」ボタンに登録する。実行すると、図7のようになる。
次に、ブックに名前を付けて保存する処理を解説しよう。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Excelマクロ/VBAリファレンス用途別・キーワード別一覧超まとめ
- ピボットテーブルとは何か──「そもそも、何をする機能か」を理解する
Excelを通じて「ピボットテーブル」の基礎を学び、データ分析を実践するまでを習得する本連載。初回はピボットテーブルの基礎と、「どんなことができるのか」を解説する。 - どんなビジネスにも欠かせないリレーショナルデータベースの基礎知識と作り方――テーブル、レコード、フィールド、主キーとは
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。初回はデータベースの基本を理解し、Accessを使い始めてみよう。