【初心者向け】動かして学ぶExcel VBA入門(6)

Excel VBA

こんにちは。ECF Tech担当
Michiharu.Tです。

Excel VBA入門の第6回です。

今回は、ワークシートの操作やワークブックの操作をご紹介します。複数のシートやファイルを操作する方法は、VBAによる効率化作業には欠かせないものです。

今回もよろしくお願いいたします。本連載の目次は下記よりご覧頂けます。

【初心者向け】動かして学ぶExcel VBA入門
Excel VBAを動かしながら学べる連載をお送りしています。講座目次第1回Excel VBAとはExcelマクロを動かしてみようExcelマクロの保存第2回セルに値を設定セルの削除オブジェクト、プロパティ、メソッド第3回ワークシートの指定...

[PR]
学習と業務が加速する ChatGPTと学ぶExcel VBA&マクロ
Udemyで13万人が受講する人気の「エクセル兄さん」が教える仕事効率化術。話題のAI「ChatGPT」を使えば…・VBAを効率的に学習できる!・マクロを簡単に作成できる!・エラーやバグ、疑問を解消できる!→ ChatGPTと一緒に「Exc...

ブックについて

今回のテーマの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つのシートが追加されています。

シートの追加2

ワークシート名の変更

ワークシート名を変更する際は、Nameプロパティを使用します。次のマクロはアクティブシートのシート名を「新しいシート」に変更します。

Sub changeSheetName()
    ActiveSheet.Name = "新しいシート"
End Sub

Sheet4をアクティブシートにして、上のマクロを実行しました(下図)。

シート名変更1

下のようにシート名を指定して、名前を変更することもできます。

Sub changeSheetName2()
    Worksheets("Sheet1").Name = "売上管理"
End Sub

このマクロでは、Sheet1という名前のシートのシート名を「売上管理」に変更しています(下図)。

シート名変更2

ワークシートのコピー

ワークシートのコピーは、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でファイル名を指定します。この時のファイル名は、ドライブ名からのパスを指定するようにしましょう。

というわけで本日はここまでとさせて頂きたいと思います。最後までお読み頂き、ありがとうございました。次回も様々なプログラムをご紹介したいと思います。ひきつづき、よろしくお願いいたします。

タイトルとURLをコピーしました