こんにちは。ECF Tech担当
Michiharu.Tです。
Excel VBA入門の第6回です。
今回は、ワークシートの操作やワークブックの操作をご紹介します。複数のシートやファイルを操作する方法は、VBAによる効率化作業には欠かせないものです。
今回もよろしくお願いいたします。本連載の目次は下記よりご覧頂けます。

[PR]
Excel VBAの実力を認定するVBAエキスパート試験の対策本です。
ブックについて
今回のテーマの1つであるブックについて説明します。ブックはExcelファイル1つに該当するオブジェクトです。下図は複数のブックを開いている状態です。赤枠で囲んだ部分がブック名です。

なお、ブックの正式な名称は「ワークブック」です。以降の説明では、どちらの表現も適宜使用しますが、違いはありません。
ワークシートの操作
ワークシートの追加
ワークシートの追加は、WorksheetsオブジェクトのAddメソッドを使用します。次のマクロはアクティブシートの後ろに、新規にワークシートを追加します。
Sub addSheet()
Worksheets.Add After:=ActiveSheet
End Sub
実行すると、アクティブシートの後ろにシートが1つ追加されます。シート名は自動でつけられます(下図)。

上記プログラム中のAfter:=ActiveSheetの部分を引数と言います。引数はメソッドに指定できる追加情報のことです。引数を指定する基本的な書き方は、引数名:=指定する情報となります。引数名はメソッドによってあらかじめ決まっており、Afterは、どのシートの後ろに新規シートを追加するかを指定できます。今回はActiveSheetを指定しているため、現在のシートの後ろに新規シートが追加されます。
Worksheets.Addメソッドでは、次のような引数が使用できます。
| 引数名 | 指定する情報 | 説明 |
|---|---|---|
| Before | シート | 指定したシートの前に新規シートを追加します。 |
| After | シート | 指定したシートの後ろに新規シートを追加します。 |
| Count | 数値 | 指定した数のシートを追加します。 |
また引数は、カンマ(,)で区切ることで複数指定することも可能です。たとえば、次のように記述することもできます。
Sub addSheet2()
Worksheets.Add Before:=ActiveSheet, Count:=2
End Sub
BeforeとCountの2つの引数を指定しています。実行すると、アクティブシートの前に2つのワークシートが追加されます。下図ではSheet2をアクティブシートとして実行したので、Sheet2の前に2つのシートが追加されています。

ワークシート名の変更
ワークシート名を変更する際は、Nameプロパティを使用します。次のマクロはアクティブシートのシート名を「新しいシート」に変更します。
Sub changeSheetName()
ActiveSheet.Name = "新しいシート"
End Sub
Sheet4をアクティブシートにして、上のマクロを実行しました(下図)。

下のようにシート名を指定して、名前を変更することもできます。
Sub changeSheetName2()
Worksheets("Sheet1").Name = "売上管理"
End Sub
このマクロでは、Sheet1という名前のシートのシート名を「売上管理」に変更しています(下図)。

ワークシートのコピー
ワークシートのコピーは、WorksheetsオブジェクトのCopyメソッドを使用します。次のような引数を使用できます。
| 引数名 | 指定する情報 | 説明 |
|---|---|---|
| Before | シート | 指定したシートの前に新規シートを追加します。 |
| After | シート | 指定したシートの後ろに新規シートを追加します。 |
次のマクロは、売上管理シートの後ろにアクティブシートのコピーを作成します。
Sub sheetCopy()
ActiveSheet.Copy After:=Worksheets("売上管理")
End Sub
下図は「新しいシート」をアクティブシートとして、上のマクロを実行したものです。売上管理シートの後ろに「新しいシート」がコピーされています。

ワークシートの削除
ワークシートの削除は、WorksheetsオブジェクトのDeleteメソッドを使用します。次のマクロでは「売上管理」シートを削除します。
Sub deleteSheet()
Worksheets("売上管理").Delete
End Sub
実行すると、下図のようなダイアログボックスが表示されます。「削除」をクリックすると削除されます。

ワークブックの操作
次にワークブックの操作に関するマクロをご紹介します。
ワークブックの追加
ワークブックの追加は、WorkbooksオブジェクトのAddメソッドを使用します。次のマクロはワークブックを新規に1つ追加します。
Sub addBook()
Workbooks.Add
End Sub
ワークブックを保存する
ワークブックを保存する際は、WorkbooksオブジェクトのSaveAsメソッドを使用します。次のマクロはファイル名を指定して、ワークブックを保存します。
ワークブックの保存では、様々な引数が使用できます。いくつかを実例でご紹介します。
Excelファイルとして保存する
次のマクロは「Book2」の名前のブックを「保存テスト.xlsx」のファイル名で保存します。
Sub saveBook()
Workbooks("Book2").SaveAs _
Filename:="C:\Users\ecf_pc\Documents\保存テスト.xlsx"
End Sub
引数Filenameを使うとファイル名を指定できます。ファイル名を指定する場合はドライブ名からのパスをすべて記述するようにします。
なお、上記のマクロは文の記述が長いため、複数行に分けて記述しています。複数行に分ける場合は、各行の末尾に半角の空白を1マス空けてその後ろにアンダースコア(_)をつけます。
CSV形式で保存する
次にCSV形式でファイル保存する例です。
Sub saveBook2()
Workbooks("Book1").SaveAs _
Filename:="C:\Users\ecf_pc\Documents\CSV保存テスト.csv", _
FileFormat:=xlCSV
End Sub
このマクロではFileFormatという引数を使用し、ファイル形式にCSV形式を指定しています。ファイル形式の指定には決まった値を使用します。次のような値があらかじめ使用できます。
| 指定する値 | ファイル形式 | 拡張子 |
|---|---|---|
| xlWorkbookDefault | 通常のExcel形式 | *.xlsx |
| xlCSV | CSV形式 | *.csv |
※FileFormatを指定しなければ通常のExcel形式で保存されますので、xlWorkbookDefaultを特に指定する必要はありません。
ワークブックを閉じる
ワークブックを閉じる際は、WorkbooksオブジェクトのCloseメソッドを使用します。次のような引数を使用できます。
| 引数名 | 指定する情報 | 説明 |
|---|---|---|
| SaveChanges | True または False |
True:ブックの変更を保存します。 False:ブックの変更を保存しません。 |
| Filename | ファイル名 | 指定したファイル名でブックを保存します。 |
次のマクロはBook1という名前のワークブックを名前を付けて保存します。
Sub closeBook()
Workbooks("Book1").Close SaveChanges:=True
End Sub
引数SaveChangesがTrueなので、ブックに変更があった場合にファイル保存を行ないます。もし、該当するワークブックをまだ1度も保存していない場合、下のような初回保存用のウィンドウが表示されます。

ワークブックを開く
ワークブックを開く際は、WorkbooksオブジェクトのOpenメソッドを使用します。次のマクロは「保存テスト.xlsx」の名前で保存されたExcelファイルを開きます。
Sub openBook()
Workbooks.Open Filename:="C:\Users\ecf_pc\Documents\保存テスト.xlsx"
End Sub
引数Filenameでファイル名を指定します。この時のファイル名は、ドライブ名からのパスを指定するようにしましょう。
というわけで本日はここまでとさせて頂きたいと思います。最後までお読み頂き、ありがとうございました。次回も様々なプログラムをご紹介したいと思います。ひきつづき、よろしくお願いいたします。


