Applicationオブジェクト Application.Worksheets

Application

Application.Worksheets は、VBA(Visual Basic for Applications)における Application オブジェクトのプロパティで、開いているすべてのワークブックのすべてのワークシート(シート)にアクセスするためのコレクションを提供します。

ただし、実務ではほとんどのケースで Workbook.Worksheets を使用します。Application.Worksheets全ブック横断的にアクセスするため、特定のブックを操作したい場合は注意が必要です。


🔷 基本構文

Application.Worksheets

これは、現在開いているすべてのブックの中にある すべてのワークシートの集合(コレクション) を返します。


🔷 使い方と動作のイメージ

使用例:

Sub 全シート名を表示()
Dim ws As Worksheet
For Each ws In Application.Worksheets
Debug.Print ws.Name
Next ws
End Sub

このコードでは、すべての開かれているブック内のすべてのシートの名前が出力されます。


🔷 一般的な使い方(Workbookからのアクセス)

実務でよく使うのはこちら:

ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = "Hello"

または:

Workbooks("Book1.xlsx").Worksheets(1).Activate

これにより、特定のブック内の特定のシートを確実に対象にできます。


🔷 Application.Worksheets の注意点

項目内容
対象範囲開いているすべてのブックのすべてのシート
インデックス指定Application.Worksheets(1) は、最初に読み込まれたシート(全ブックの中で)
同名シートの存在複数ブックで Sheet1 など同名シートがあると、名前でのアクセスは不確定になりやすい
操作対象が曖昧どのブックのシートかを明確にしないと、誤操作の原因になる

🔷 使用例:すべての開いているシートのA1に値を入力

Sub 全シートに入力()
Dim ws As Worksheet
For Each ws In Application.Worksheets
ws.Range("A1").Value = "共通入力"
Next
End Sub

⚠️ これはすべての開いているブックのすべてのシートに入力します。誤って他のファイルも変更してしまうリスクがあるため、使う際は注意が必要です。


🔷 .Count で全シート数を取得

Sub シート数をカウント()
MsgBox "開いている全シート数: " & Application.Worksheets.Count
End Sub

🔷 Worksheetへのアクセス方法まとめ

方法内容使用頻度
Application.Worksheets(1)開いているすべてのシートから1番目低(あまり使わない)
Workbooks("Book1.xlsx").Worksheets(1)指定ブック内の1番目のシート
ThisWorkbook.Worksheets("Sheet1")マクロが書かれているブックのSheet1非常によく使う
ActiveSheet現在アクティブなシート中(簡易な処理向け)

🔷 実務での推奨

通常、Application.Worksheets は範囲が広すぎて制御が難しいため、以下のようなブック単位での指定が推奨されます:

Dim ws As Worksheet
Set ws = Workbooks("Book1.xlsx").Worksheets("売上表")

🔷 まとめ

項目内容
メソッド名Application.Worksheets
Worksheets コレクション
対象すべての開いているブックのワークシート
用途全ブック横断的な操作が必要な場合(注意が必要)
主な注意点対象が曖昧になりやすく、意図しないブックにも影響を与える可能性あり
実務での推奨可能な限り Workbook.Worksheets を使用して明確に対象を絞る

✅ よく使う安全な書き方

Dim wb As Workbook
Dim ws As Worksheet

Set wb = Workbooks("Book1.xlsx")
Set ws = wb.Worksheets("Sheet1")
ws.Range("A1").Value = "データ入力"
タイトルとURLをコピーしました