K-fix Learning & Playing

基礎編


ブックの操作

ブックを開いたり、閉じたりする操作のコードを作成しましょう。また、新規ブックの作成と保存で使うメソッドなども学習していきます。
ブックを開く、閉じるのVBAコードは次のとおりになります。

                        
        Sub 開閉()
            Workbooks.Open "見積書.xlsx"
            MsgBox "「見積書」ブックを閉じます。"
            Workbooks("見積書.xlsx").Close
        End Sub
                        
                    

ブックを開くにはOpenメソッドを使います。Workbooksプロパティを記述し、引数として開くブックのファイル名を指定します。この時、気をつけないといけないの、ファイル名は拡張子まできちんと記述することです。

開きたいブックの場所をパス名で入力しないといけませんが、省略されている場合は、通常マイドキュメントに保存されているファイルを開きます。もし、DドライブのFILESフォルダに保存されている"請求書.xls"を指定するなら、以下のとおりになります。

Workbooks.Open "D:¥FILES¥請求書.xls"

Openメソッドの書式

Workbooks.Open FileName

Workbooks :開きたいWorkbooksオブジェクトを指定
FileName  :ファイル名

※Openメソッドには、たくさんの引数がありますが、ここではファイル名の引数だけ取り上げています

ブックが開いたら、メッセージボックスで閉じる旨を表示し、それからブックを閉じます。ブックを閉じるのは、Closeメソッドを使用します。

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メソッドで保存します。

SaveAsメソッドの書式

object.SaveAs (FileName)

object   :保存するワークシートやブックオブジェクトを指定
FileName :保存するファイル名を指定

※SaveAsメソッドには、たくさんの引数がありますが、ここではファイル名の引数だけ取り上げています。

単にファイル名を記述した場合は、マクロのあるブックと同じフォルダに保存されます。他のフォルダなどに保存する際には、そのフォルダまでのパス名を記述する必要があります。

次は、新規に作ったワークシートのSheet1のセルA1に「2000」という数値を挿入します。そして、「上書き保存しますか」というメッセージを表示させます。表示されるメッセージボックス内のボタンは、「はい」と「いいえ」の2つのボタンがあるものです。
そこで、もし「はい」をクリックしたら、それを保存するようにIF構文を使って記述されています。「いいえ」ならば何も処理しない設定にしています。

Saveメソッドの書式

object.Save

object :保存するブックオブジェクトを指定

-補足:メッセージボックス(MsgBox)の3つの引数-

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, "表示確認"