2008年12月03日

Pagesオブジェクト

Excel 2007のVBAヘルプの目次から「Excel 2007開発者用リファレンス」→「リファレンス」と進んでいくと、「Pageオブジェクト」「Pagesオブジェクト」という項目があるのがわかります。
これらは、Excel 2003のVBAヘルプの「オブジェクト」の一覧にはなく、2007で追加されたものです。
Excel 2007では、見出し上は「コレクション」と「オブジェクト」の区別がなくなっていますが、「Pagesオブジェクト」が「Pageオブジェクト」の集合(コレクション)であることは明らかです。

で、それぞれのオブジェクトの説明を見てみると……まず基本的な説明文の意味がよくわからない。曖昧というか、あまり意味のあることを言っているようには思えません。
(引用はしないので、各自ご確認ください)
それ以外にも、突っ込みどころは豊富です。

とりあえず、「Pagesオブジェクト」についてみてみましょう。
このヘルプの最大の問題点は、“親オブジェクトが何なのかわからない”ことです。
「Pagesコレクションを取得するには、Pagesプロパティを使用します」という説明はあるものの、「Pages」が何のオブジェクトのプロパティなのかと言う説明は一切ない。

そこで使用例を見てみると……

Dim objPages As Pages

Set objPage = ActiveWorksheet. _
  ActiveWindow.Panes(1).Pages


となっています。
ところが、この通りに書いて実行してみてもエラーになるだけです。
それも当然で、PagesはPaneオブジェクトやWindowオブジェクトのプロパティではないし、そもそも「ActiveWorksheet」などというExcel VBAのキーワードはありません(「ActiveWorkbook」と間違えた?)。

さらにいうと、この使用例自体、単に取得したオブジェクト(取得できてませんが)をオブジェクト変数に割り当てているだけの操作であり、何も“使い方の説明”にはなっていません(しかも宣言部分と変数名が違っているし^^;)。
使用例はもう1つありますが、そちらもほとんど同様であり、さらに「Itemメソッド」などという誤った記述も追加されています。

結局、「Pages」という機能をどう使えばいいのか、この部分の記載から調べることはできない、ということになります。

また、Excel 2007のVBAヘルプでは、目次に「プロパティ」の独立した見出しがなくなり、すべてオブジェクトのメンバとしての説明になっているため、プロパティの見出しからたどっていくこともできません。
……まあ、目次からたどるのではなく「Pagesプロパティ」というキーワードで検索するという手はありますし、「だいたいあの辺りだろうなあ」と見当が付かないわけでもないのですが。

ということで、正解は「PageSetupオブジェクトのPagesプロパティ」です。
……あの適当な使用例は、いったいどこから出てきたのでしょうか?(^^;)

使用例への突っ込みだけで結構長くなってしまったので(^^;)、PagesコレクションとPageオブジェクトについては、次回、もう少し詳しく書いてみたいと思います。
posted by 土屋和人 at 09:34| Comment(0) | TrackBack(0) | Excel
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/23761019
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック