Home » パワーポイントマクロ・PowerPoint VBAの使い方 » _NewEnumプロパティがない?

対象:PowerPoint

PowerPointのSlideRangeオブジェクトがFor Each~Next文で処理できることを、記事にしました。

これに関して、VBAについて深く理解しておられ、拙著『いちばんやさしいExcel VBAの教本』の執筆段階でのレビューでも大変お世話になったthomさんから、
「コレクションなら存在するはずの_NewEnumプロパティが、オブジェクトブラウザーで見えないのが不可解」
といった主旨のリプライをいただきました(非公開アカウントのため意訳させていただいています)。

[スポンサードリンク]

折角の機会なので、この件について記事にさせていただきます。

_NewEnumプロパティとは

そもそも_NewEnumプロパティとは何でしょう。

VBA等から処理できるようなアプリケーションを作るときはこの方針で作ってくださいねと、Microsoftがまとめた公式文書『オートメーションプログラマーズリファレンス―ActiveXテクノロジを使用したアプリケーション開発技法 (MicrosoftPRESS)』の、p.28に以下の記述があります。

すべてのコレクションオブジェクトは、_NewEnumという読み取り専用のプロパティをエクスポーズして、ActiveXクライアントが反復処理をサポートするオブジェクトを認識できるようにしなければなりません。

逆に言えば、_NewEnumプロパティの存在するオブジェクトは、VBAのFor Each~Next文で処理できるということです。

この存在するはずの_NewEnumプロパティが、PowerPoint.SlideRangeでは見えないのが不可解だと、thomさんはおっしゃっているのです。

Excelライブラリーのコレクションでは_NewEnumを確認できる

先にExcelの状態を確認しましょう。

ExcelのVBEでオブジェクトブラウザーを表示して、非表示のメンバーを表示する設定で「_NewEnum」を検索すると、下図のように多くのコレクションに_NewEnumプロパティまたはメソッドが存在していることを確認できます。

オブジェクトブラウザ:Excelライブラリで_NewEnumを検索

Excel VBAでもっとも基本的なFor Each~Next処理できるWorkbooks・Sheets・Rangeいずれにも、_Enumプロパティが存在しています。

PowerPointライブラリーのコレクションでは_NewEnumを確認できないものが多い

これに対してPowerPointのオブジェクトブラウザーで、ライブラリーを「PowerPoint」に限定して検索した場合、下図のように_NewEnumが存在するオブジェクトはあまりないことがわかります。

オブジェクトブラウザ:PowerPointライブラリで_NewEnumを検索

今回thomさんが気になさったSlideRangeはもちろん、PowerPoint VBAでFor Each~Next処理できるもっとも基本的なPresentationsやSlidesでさえ、_NewEnumは見えません。

ただし内部的には_NewEnumに相当するプロパティまたはメソッドが存在しているからこそ、For Each~Next処理できているはずです。

そして、_NewEnumの見えていたコレクションをあらためて見直すと、Axes・DataLabels・SeriesCollectionといったグラフや、Shapes・ShapeNodesといった図形関連のコレクションだけであることがわかります。

ExcelからPowerPointにおそらく移植したのだろうと思われるオブジェクトにだけ、_NewEnumが見えているように感じます。

Officeライブラリーのコレクションでは_NewEnumを確認できる

一方、PowerPointライブラリーより、あとに登場したOfficeライブラリーに限定して「_NewEnum」を検索すると、下図のような状態になります。

オブジェクトブラウザ:Officeライブラリで_NewEnumを検索

たくさんのコレクションに_NewEnumが存在していることを確認できます。

Office 97の頃は内部仕様を統一しきれなかったのでは

VBAはOffice 97の頃に多くのOfficeアプリケーションで使えるようになりました。

その当時Microsoftは内部仕様を統一しきれなかったため、PowerPointのコレクションについては、VBEのオブジェクトブラウザーレベルでは_NewEnumが見えないものが多いのだろうと、私は推測しています。

最終更新日時:2019-01-11 06:12

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » _NewEnumプロパティがない?

「パワーポイントマクロ・PowerPoint VBAの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.