Worksheetsについて
現在作業しているWorkbookオブジェクトのすべてのWorksheetが格納されているのが、Worksheetsオブジェクトです
作業中のファイルにいくつワークシートがあるのか、どのワークシートをコピーして、どこに挿入するかなどを行う場合は、このWorksheetsオブジェクトを使用します
■オブジェクト
WorksheetsオブジェクトはWorksheetオブジェクトのコレクションで、Sheetsオブジェクトのコレクションメンバーとなっています
つまり、Sheetsオブジェクト > Worksheetsオブジェクトということです
※Sheetには、WorksheetsオブジェクトとChartsオブジェクトが含まれています
・構文
構文は以下の通りです
Excel.Worksheets
このWorksheetsオブジェクトをWorksheets型にSetしようとすると怒られますw
実は、Sheets型にSetしないといけません!
・メソッド
オブジェクトのメソッドは以下の通りです
- Add … 新しいワークシートをオブジェクトとして追加
- Copy … ワークシートをコピー
- Delete … ワークシートを削除
- FillAcrossSheets … コレクション内の全ワークシートに同じ指定領域をコピー
- Move … ワークシートを移動
- Select … ワークシートを選択
- etc…
印刷関連のメソッドについては除外しました(2つだけですがw)
・プロパティ
オブジェクトのプロパティは以下の通りです
- Count … オブジェクト内のワークシートの数
- HPageBreaks … 水平方向の改ページのコレクションを取得
- Item … コレクション内の単一オブジェクトを取得
- Parent … 親オブジェクト(Workbookオブジェクト)を取得
- Visible … オブジェクトを表示するかどうか
- VPageBreaks … 垂直方向の改ページのコレクションを取得
- etc…
Application、Creatorプロパティについては記載を除外しました(どこにでもあって、使い方道がよくわからないのでw)
HPageBreaksとVPageBreaksとVisibleプロパティについては、そっとしておきます
■例
・簡単なサンプル
Sub SampleWorksheets() Dim wss As Sheets Dim ws As Worksheet ' ① Set wss = Excel.Worksheets Debug.Print "① " & wss.Count For Each ws In wss Debug.Print "① " & ws.Name, ws.Parent.Name Next Set wss = Nothing ' ② Set wss = Excel.Workbooks(1).Worksheets Debug.Print "② " & wss.Count For Each ws In wss Debug.Print "② " & ws.Name, ws.Parent.Name Next Set wss = Nothing ' ③ Set wss = Excel.Application.Worksheets Debug.Print "③ " & wss.Count For Each ws In wss Debug.Print "③ " & ws.Name, ws.Parent.Name Next Set wss = Nothing ' ④ Set wss = Excel.Application.ActiveWorkbook.Worksheets Debug.Print "④ " & wss.Count For Each ws In wss Debug.Print "④ " & ws.Name, ws.Parent.Name Next Set wss = Nothing End Sub
実行サンプルの絵です(いきなりどうした!?w)
このサンプルソースは、Sample.xlsmの「Sheet1」に記載しており、サンプル.xlsmをActiveにした状態で、SampleWorksheetsメソッドを実行いた結果をイミディエイトウィンドウに表示しています
・説明
Worksheetsオブジェクトの取り方は、4パターン!(ホンマは他にも[Application.Workbooks(1).Worksheets]とかもあるけどw)
②だけがActiveではないWorkbookから取得していることがわかりますね
そして、Countプロパティも「For Each … Next」ステートメントでも「グラフ1」(Chartsオブジェクトに含まれるグラフシート)は取得されないことがわかります
どちらも取りたい場合は、最初に書いた通り、Sheetsオブジェクトを使います!
・注意点
- 型 … Worksheets型ではなく、Sheets型に取得する
- 取得できるもの … ワークシートのみ
- Addメソッド … グラフシートが追加できる!?(らしいw)
- そっとしておきたいプロパティがあるw
・その他
サラッとも触れていませんが、FillAcrossSheetsメソッド!これ実は便利なのです!(使い方の詳細については、いつかきっと、どこかで記載しますw)
Addメソッドもリファレンスを見る限りは、Worksheetsオブジェクトなのに、Chartオブジェクトを追加できるらしいのです!?
※Chartsオブジェクトには、Add2メソッドというのがあるそうですw
次はその辺りを調べましょー!
ではでは