次は「ブックを追加する」マクロを紹介しよう。これも「新規ブックの追加」というボタンを作っておき、これにマクロを追加しておくと、ボタンクリックだけで、新規ブックが追加されていく。これも日常の業務には役に立つ処理だと思う。
ブックを追加するには、Addメソッドを使用する。書式は下記の通りだ。
Workbooksコレクション.Add
ブックを追加するマクロはリスト3のようになる。
Sub ブックの追加() Workbooks.Add End Sub
このマクロを「ブックの追加」というボタンに登録する。すると、このボタンをクリックすると図5のように新規ブックが追加される。
次に、先ほど開いていた「社員売上表.xlsx」ブックを閉じてみよう。
ブックを閉じるにはCloseメソッドを使用する。Closeメソッドの書式は下記の通りだ。
Workbooksコレクション({閉じるExcelのファイル名}).Close
「社員売上表を閉じる」ボタンを作成し、リスト4のマクロを登録する。
Sub ブックを閉じる() On Error GoTo myError Workbooks("社員売上表.xlsx").Close Exit Sub myError: MsgBox "社員売上表は開いていません。" End Sub
ここで重要なのは、「社員売上表.xlsx」が開いていないときに、「社員売上表を閉じる」ボタンをクリックするとエラーが発生するため、「社員売上表.xlsx」が開いているときは閉じて、開いてないときは「開いていません」のメッセージボックスを表示させることだ。
On Error Goto構文でエラーが発生したときにmyErrorの行に制御を移している。myErrorでは警告メッセージを表示させる処理を行っている。
以下は、On Error Goto構文の書式だ。
On Error Goto {myError}
{処理}
Exit Sub
{myError}:
{エラー処理}
単純に開いたファイルを閉じるだけならCloseメソッドを記述するだけでいいが、プログラムの場合は、開いていないときでも、ボタンをクリックする可能性があるので、そういった場合の処理もきちんと書いておくことが大切だ。
リスト4のマクロを「社員売上表を閉じる」ボタンに登録して実行すると、図6のようになる。
ブックを「開く」「閉じる」と来たら、次はブックの保存をとなるのが順番だ。ブックの保存をマクロ化してみよう。
ブックを保存するにはSaveメソッドを使用する。ブックの上書き保存が可能だ。書式は下記の通りだ。
Workbookオブジェクト.Save
現在アクティブになっているブックを保存するには、下記のように記述するだけでいい。
ActiveWorkbook.Save
この記述だけで、アクティブになっているブックが上書き保存される。
ブックの保存はこの程度にして、次は「ファイルを開く」ダイアログボックスでブックを開いてみよう。
ダイアログボックスでブックを開くには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.