目次
Workbooksコレクション・ Workbookオブジェクトについて
Excelで複数のブックを開いている場合、複数のブックはWorkbooksコレクション、任意の1ブックはWorkbookオブジェクトになります。任意のブックを操作する場合は、必ず「Workbooksコレクションの中のどのブック」かを指定する必要があります。
例えば、以下の4ファイルをオープンしていて、Z.xlsmの標準モジュールにセル「A1」に100を代入するコードを記載して、実行します。
<Z.xlsmの標準モジュール:アクティブなブックのアクティブなシートに処理>
Sub sample()
Range("A1") = 100
End Sub
この場合はアクティブなブックのセルA1に100が入力されます。Z.xlsmがアクティブであればZ.xlsmのアクティブなシートのセルA1にA.xlsxがアクティブであればA.xlsxのアクティブなシートのセルAに100が入力されます。
決まった特定のブックに処理をしたい場合は、以下のようにWorkbooksコレクションのどのブック(オブジェクト)かを指定する必要があります。
どのブックかを指定すると、そのブックのどのワークシートかも指定する必要があります。
<Z.xlsmの標準モジュール:A.xlsxのシート1に処理>
Sub sample()
Workbooks("A.xlsx").Worksheets("Sheet1").Range("A1") = 100
End Sub
上記の場合は、どのブックがアクティブでもA.xlsxのSheet1のセルA1に100が入力されます。
以下の記事はワークシートオブジェクトですが、オブジェクトを指定しない場合、標準モジュール、シートモジュール、ブックモジュールのどこに記載されているかで、どのシートが指定されるかの違いを紹介しています。
auroralights.jp
複数のブックの操作について
複数のブックの中の任意のブックを操作するには、Workbookコレクションでブックを指定しますが、ブックの指定には、「ブックの名前で指定する方法」と、「Excelが開いた順番に付けられる番号で指定する方法」の2つの方法があります。
'--1.ブック名で指定する方法
Sub sample()
Workbooks("A.xlsx").Activate
End Sub
'--2.ブックの開いた番号で指定する方法
Sub sample()
Workbooks(3).Activate
End Sub
※Activateメソッドは指定したブックをアクティブにするメソッドになります。
Worksheetsコレクション・オブジェクトについて
ブック内のワークシートはWorksheetsコレクション、特定のワークシートはWorksheetオブジェクトとして操作します。
ただし、シートはワークシートだけではなく、グラフシートやExcel4.0のマクロを記述するためのMacroシート、Excel5.0で使われていたダイアログシートがあります。
<Excelのシートの種類>
<Worksheetsコレクション>
<Sheetsコレクション>
Worksheetsコレクションはブック内の全てのワークシート、Sheetsコレクションはワークシートだけでなくグラフ、Macro、ダイアログシートを含めたブック内の全てのワークシートを表します。
WorksheetsコレクションはSheetsコレクションに含まれます。
以下の2つのコードは同じSheet1を指定しています。
Sub sampleSheet()
'--Worksheetsコレクション
Worksheets("Sheet1").Activate
End Sub
Sub sampleSheet2()
'--Sheetsコレクション
Sheets("Sheet1").Activate
End Sub
複数のシートの操作について
複数のシートの場合は、どのブックのどのシートかを指定します。
以下のコードを標準モジュールに記述した場合は、アクティブブックに対して以下の処理をします。
Sub sampleSheet()
'--Worksheetsコレクション
Worksheets("Sheet1").Activate
End Sub
どのブックかを指定することで、特定のシートに対して処理を実施できます。
Sub sampleSheet()
'--Worksheetsコレクション
Workbooks("Book1.xlsm").Worksheets("Sheet1").Activate
End Sub