Workbooks について
Excel VBAでやれることを探していると、どうしてもセルや行、列、シートの操作について調べることが多くなりますが、ベースとなるWorkbooksについて、調べてみようと思います
WorkbooksオブジェクトとWorkbookオブジェクトがあるのですが、何が違うのだろうか?
ま、複数形と単数形なので、複数ファイルと単数ファイルを指しているんでしょうけど、今回は、複数形の方です!
■Workbooksオブジェクト
・構文
構文は以下の通りですが、構文と言うほどのことはないですけどねw
Excel.Workbooks
要するに、Excelで開いているWorkbookオブジェクトのコレクションがWorkbooksオブジェクトということです
・メソッド
オブジェクトのメソッドは以下の通りです
- Add … 新しいWorkbookを作成
- CanCheckOut … WorkbookがサーバでCheckOut可能か調べる
- CheckOut … WorkbookをCheckOutしてローカルへコピー
- Close … 開いているWorkbookを全て閉じる
- Open … Workbookを開く
- OpenDatabase … データベースをWorkbookとして開く
- OpenText … テキストファイルをWorkbookとして開く
- OpenXML … XMLファイルをWorkbookとして開く
・プロパティ
オブジェクトのプロパティは以下の通りです
- Application … オブジェクトを作成したアプリケーションのオブジェクト
- Count … コレクションに含まれるオブジェクトの数
- Creator … オブジェクトを作成したアプリケーション情報
- Item … コレクション内の単一オブジェクト
- Parent … 親オブジェクト
■例
・簡単なサンプル
Sub Sample() Dim wb As Workbooks Dim w As Workbook Dim i As Long ' 現在開いているExcelのWorkbookオブジェクトのコレクションを取得します Set wb = Me.Application.Workbooks ' Sample.xlsxファイルを読み取り専用で開きます wb.Open Filename:="C:\Sample.xlsx", ReadOnly:=True ' ワークシートを含む新しいWorkbookを開きます wb.Add Template:=xlWBATWorksheet ' プロパティを表示してみます Debug.Print wb.Application ' 「Microsoft Excel」当然Excelが返ります Debug.Print wb.Count ' 「3」マクロを書いたファイルとOpenしたのとAddした3つ Debug.Print wb.Creator ' 「1480803660」何これ?w ' ファイル数分ループする For i = 1 To wb.Count Debug.Print wb.Item(i).Name ' 「Book1.xlsm」「Sample.xlsx」「Sheet1」のファイル名が返る Next i Debug.Print wb.Parent ' 「Microsoft Excel」が返ります ' 全てのExcelファイルを閉じます(Addして編集しなかった場合は何も言われずに閉じますね) wb.Close ' オブジェクトを開放 Set wb = Nothing End Sub
・説明
Openメソッドでファイルを読み取り専用で開き、
Addメソッドでシートを指定して新規ファイルを作成して、
Countプロパティで得た数のItemプロパティは、
WorkbookオブジェクトですのでNameプロパティでファイル名を出力させ、
Closeメソッドで全てのファイルを閉じました
・注意点
- WorkbooksオブジェクトはWorkbookオブジェクトの集まり
- Openメソッドはファイルを開く
- Addメソッドはファイルを新規作成する
- Closeメソッドは全てのファイルを閉じる
- Itemプロパティの要素番号は「1」から
・For Each…Nextステートメント
WorkbooksオブジェクトはWorkbookオブジェクトのコレクションですから、
「For Each…Next」ステートメントを使用して、ItemプロパティをWorkbookオブジェクトとして取得できます
Sub Sample() Dim wb As Workbooks Dim w As Workbook For Each w In wb Debug.Print w.Name Next ' オブジェクトを開放 Set wb = Nothing End Sub
・その他
AddメソッドとOpenメソッドの詳細は別途、記事を作成していこうと思います
時間とニーズがあれば、OpenTextメソッドやOpenDatabaseメソッドにも触れたいですけどねー
Workbooksオブジェクトのプロパティは、ま、こんなもんでしょー
後は、Workbookオブジェクトとして、説明を書こうと思います
ではでは