検索
連載

Excelブックの操作とイベント処理&VBAのエラー処理Excelマクロ/VBAで始める業務自動化プログラミング入門(10)(2/4 ページ)

プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。今回は、ブック操作のメソッド、Activate、Open、Add、Close、Save、GetOpenFilename、SaveAsなどに加えて、VBAにおける基本的なエラー処理であるOn Error Goto構文について解説【Windows 10、Excel 2016に対応】。

Share
Tweet
LINE
Hatena

Addメソッドでブックの追加

 次は「ブックを追加する」マクロを紹介しよう。これも「新規ブックの追加」というボタンを作っておき、これにマクロを追加しておくと、ボタンクリックだけで、新規ブックが追加されていく。これも日常の業務には役に立つ処理だと思う。

 ブックを追加するには、Addメソッドを使用する。書式は下記の通りだ。

Addメソッドの書式

Workbooksコレクション.Add


 ブックを追加するマクロはリスト3のようになる。

Sub ブックの追加()
  Workbooks.Add
End Sub
リスト3 ブックを追加する

 このマクロを「ブックの追加」というボタンに登録する。すると、このボタンをクリックすると図5のように新規ブックが追加される。


図5 新規ブックが追加された

 次に、先ほど開いていた「社員売上表.xlsx」ブックを閉じてみよう。

Closeメソッドでブックを閉じる

 ブックを閉じるにはCloseメソッドを使用する。Closeメソッドの書式は下記の通りだ。

Closeメソッドの書式

Workbooksコレクション({閉じるExcelのファイル名}).Close


 「社員売上表を閉じる」ボタンを作成し、リスト4のマクロを登録する。

Sub ブックを閉じる()
  On Error GoTo myError
    Workbooks("社員売上表.xlsx").Close
    Exit Sub
  myError:
    MsgBox "社員売上表は開いていません。"
End Sub
リスト4 ブックを閉じる

 ここで重要なのは、「社員売上表.xlsx」が開いていないときに、「社員売上表を閉じる」ボタンをクリックするとエラーが発生するため、「社員売上表.xlsx」が開いているときは閉じて、開いてないときは「開いていません」のメッセージボックスを表示させることだ。

重要! Excel VBAのエラー処理

 On Error Goto構文でエラーが発生したときにmyErrorの行に制御を移している。myErrorでは警告メッセージを表示させる処理を行っている。

 以下は、On Error Goto構文の書式だ。

On Error Goto {myError}

 {処理}

 Exit Sub

{myError}:

 {エラー処理}


 単純に開いたファイルを閉じるだけならCloseメソッドを記述するだけでいいが、プログラムの場合は、開いていないときでも、ボタンをクリックする可能性があるので、そういった場合の処理もきちんと書いておくことが大切だ。


 リスト4のマクロを「社員売上表を閉じる」ボタンに登録して実行すると、図6のようになる。


図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
リスト5 ファイルを開くダイアログボックスを表示

 文字列型変数openFileを宣言する。GetOpenFilenameでファイルの種類を「Excelブック」とし拡張子が「*.xlsx」と指定して.xlsxファイルのみを表示するようにする。それらのファイルをopenFile変数に格納する。ダイアログで[キャンセル]されたときは処理を抜け、それ以外の場合は、Openメソッドで指定されたExcelブックファイルを開く。

 このマクロを「ファイルを開く」ボタンに登録する。実行すると、図7のようになる。


図7 ファイルを開くダイアログボックスが開いた

 次に、ブックに名前を付けて保存する処理を解説しよう。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る