ブックを開いたり、閉じたりする操作のコードを作成しましょう。また、新規ブックの作成と保存で使うメソッドなども学習していきます。
ブックを開く、閉じるのVBAコードは次のとおりになります。
Sub 開閉()
Workbooks.Open "見積書.xlsx"
MsgBox "「見積書」ブックを閉じます。"
Workbooks("見積書.xlsx").Close
End Sub
ブックを開くにはOpenメソッドを使います。Workbooksプロパティを記述し、引数として開くブックのファイル名を指定します。この時、気をつけないといけないの、ファイル名は拡張子まできちんと記述することです。
開きたいブックの場所をパス名で入力しないといけませんが、省略されている場合は、通常マイドキュメントに保存されているファイルを開きます。もし、DドライブのFILESフォルダに保存されている"請求書.xls"を指定するなら、以下のとおりになります。
Workbooks.Open "D:¥FILES¥請求書.xls"
Workbooks.Open FileName
Workbooks :開きたいWorkbooksオブジェクトを指定
FileName :ファイル名
※Openメソッドには、たくさんの引数がありますが、ここではファイル名の引数だけ取り上げています
ブックが開いたら、メッセージボックスで閉じる旨を表示し、それからブックを閉じます。ブックを閉じるのは、Closeメソッドを使用します。
Object.Close (SaveChanges、FileName、RouteWorkbook)
SaveChanges :ブックの変更を保存するかしないかを指定
FileName
:変更したファイルを保存するファイル名を指定
RouteWorkbook :ブックを回覧するかどうかを指定
引数のSaveChangesをTrueに指定すると、ブックに変更があれば上書き保存します。Falseであれば、変更があっても変更されずそのまま閉じられます。また、FileNameを使うと、別の名前で保存できます。
ただ、ブックを閉じるだけであれば引数は省略して記述するだけです。
次は、新規ブックの作成と保存についてのVBAコードを作成しましょう。以下のとおりに記述してください。
Sub 新規ブックと保存()
Dim Rtn As Integer
Dim NewBk As Workbook
Set NewBk = Workbooks.Add
Worksheets("Sheet1").Range("A1") = 2000
Rtn = MsgBox("上書き保存しますか?", vbYesNo)
If Rtn = vbYes Then
NewBk.SaveAs "sample.xls"
End If
End Sub
上記のVBAコードの説明をします。まず、最初に2つの変数宣言を行います。変数Rtnは、後からMsgBox関数の戻り値を格納するための変数となります。
次に、Addメソッドを使って新規ブックを作成し、そのブックのA1に「2000」を入力し、上書き保存するかのメッセージを表示します。「はい」を押したらファイル名を「sample.xls」にしてSaveAsメソッドで保存します。
object.SaveAs (FileName)
object :保存するワークシートやブックオブジェクトを指定
FileName :保存するファイル名を指定
※SaveAsメソッドには、たくさんの引数がありますが、ここではファイル名の引数だけ取り上げています。
単にファイル名を記述した場合は、マクロのあるブックと同じフォルダに保存されます。他のフォルダなどに保存する際には、そのフォルダまでのパス名を記述する必要があります。
次は、新規に作ったワークシートのSheet1のセルA1に「2000」という数値を挿入します。そして、「上書き保存しますか」というメッセージを表示させます。表示されるメッセージボックス内のボタンは、「はい」と「いいえ」の2つのボタンがあるものです。
そこで、もし「はい」をクリックしたら、それを保存するようにIF構文を使って記述されています。「いいえ」ならば何も処理しない設定にしています。
object.Save
object :保存するブックオブジェクトを指定
MsgBox(prompt、buttons、Title)
表示するボタンのタイプは専用の定数で指定します。また、表示するボタンやアイコンが数種類用意されているので、状況に応じて違ったタイプのメッセージボックスが表現できます。
定数 | 値 | 内容 |
---|---|---|
vbOKOnly | 0 | [OK]ボタンのみ表示 |
vbOKCancel | 1 | [OK]ボタンと[キャンセル]ボタンを表示 |
vbAbortRetrylgnore | 2 | [中止]、[再試行]、[無視]の3つのボタンを表示 |
vbYesNoCancel | 3 | [はい]、[いいえ]、[キャンセル]の3つのボタンを表示 |
vbYesNo | 4 | [はい]ボタンと[いいえ]ボタンを表示 |
vbRetryCancel | 5 | [再試行]ボタンと[キャンセル]ボタンを表示 |
vbCritical | 16 | 警告メッセージアイコンを表示 |
vbQuestion | 32 | 問い合わせメッセージアイコンを表示 |
vbExclamation | 48 | 注意メッセージアイコンを表示 |
vbInformation | 64 | 情報メッセージアイコンを表示 |
上図のようなメッセージボックスを表示するには、以下のとおり記述します。
MsgBox "こんにちは", vbYesNoCancel + vbInformation, "表示確認"