潜在的な影響がある Office 2010 オブジェクト モデルの変更について

原文の記事の投稿日: 2011 年 9 月 3 日 (金曜日)

寄稿者: 互換性エキスパート Curtis Sawin

Office 2010 への移行に伴うハードルの 1 つとして、Office アプリケーションのオブジェクト モデルの変更による影響を評価する必要があることが挙げられます。IT プロフェッショナルや IT 開発者が危惧するのは、オブジェクト モデルの変更が多すぎて、たとえば Excel の前のバージョンで作成したマクロが Excel 2010 で使えなくなるではないか、といったことです。Office 2010 アプリケーションの最新バージョンと Office 2007、2003、XP、および 2000 の各製品におけるオブジェクト モデルの相違を MSDN の記事 (この投稿の最後に掲載したリンクを参照) にある長大な一覧で目にすると、動作しなくなるマクロがあることは不可避のように思われるでしょう。ただし、ほとんどの変更は影響のないものであり、マクロにいっさいの影響を及ぼしません。ここで言う "ほとんど" が何を意味するのかが問題です。以下の要約をご覧ください。

  • Excel 2010、Word 2010、PowerPoint 2010、Outlook 2010、および Access 2010 の結合オブジェクト モデルには、22,000 を超えるアイテム (プロパティ、メソッド、および定数) がある
  • オブジェクト モデルには、2,134 か所の変更がある
  • 潜在的な影響がある変更が 49 か所ある

潜在的な影響がある 49 か所の変更は、5 つのアプリケーションと 4 つの前のバージョンに分かれて存在します。これがすべてです。この確認結果をグラフにすると、次のようになります。

ここでは、"影響のない変更" と "潜在的な影響のある変更" が何を意味するのかについて説明します。 補足 : 後で参照できるように、潜在的な影響のあるすべての変更の一覧を記載しました。この一覧は、この投稿の最後に .pdf ファイルとしても添付されています。

"影響のない変更" と "潜在的な影響のある変更"

MSDN ドキュメントには、各 Office 2010 アプリケーションのオブジェクト モデルにおけるすべての変更箇所が記載されています。変更箇所は整理分類され、変更または削除されたか、使用が非推奨とされたすべてのメソッドまたはプロパティが、以前のバージョンごとに一覧化されています。

たとえば、Excel 2010 の場合、前のバージョンと異なるアイテムはオブジェクト モデル内に約 900 個あります。一見して、恐ろしく多いと感じられるでしょう。MSDN 記事「Excel 2010 Object Model Changes Since Earlier Versions (英語)」には、変更されたアイテムが個別に記載されています。これを印刷すると、約 90 ページにもなります。

非推奨のアイテム - 影響なし

変更箇所の大半は、使用が非推奨となったアイテム (非表示のアイテムとも呼ぶ) です。さて、“非推奨のアイテム” とは何でしょうか。使用中のマクロにどう影響するのでしょうか。非推奨とされたアイテムは、Office の将来のバージョンで使用できることが保証されません。将来、コードを更新することを計画する必要があります。ただし、非推奨のアイテムは依然として機能します。したがって、Office の前のバージョン用に作成したマクロ コードがあり、その中で非推奨のメソッド、プロパティ、または定数が使用されていても、Office 2010 でそれらのアイテムを動作させるために何かのアクションを起こす必要はありません。まったく不要です。約 900 個の変更されたアイテム (正確には 882 個) のうち、794 個が非推奨のアイテムです。つまり、Excel オブジェクト モデルの 900 個の変更のうち約 800 個は、マクロで使用していたとしても影響のないものです。

したがって、非推奨のアイテムに関する対処は後回しにできますが、完全に無視してはなりません。このようなアイテムが含まれるコードは、レビューを行って適切に変更し、昨日までの非推奨のコードが今日は壊れたコードにならないように対応する必要があります。

削除されたアイテム – 影響あり

“削除された” アイテムは影響大です。削除済みと明記されたアイテムは、Office 2010 オブジェクト モデルにもはや存在しません。Office 2010 で削除されたアイテムが含まれる既存のマクロは、機能しなくなります。Excel 2010 の場合、前のバージョンにあった 9 個のオブジェクト モデル アイテムが削除されました。これらは特に注意して対応する必要があるアイテムです。別のアイテムで置き換えてください。

変更されたアイテム – ほぼ影響なし

“変更された” アイテムは、前のバージョンから…そう…変更されたメソッドやプロパティのことです。たとえば、メソッドが以前と異なるデータ型を返すように変更されたり、プロパティが“読み取り専用”から“読み取り/書き込み”に変更されたといったケースです。ちょっとした分析を実施したところ、ほとんどのアイテムの変更は、メソッドやプロパティが受け取るオプション パラメーターの追加であることが判明しました。たとえば、Excel 2003 では ListRows.Add (英語) メソッドのオプション パラメーターは 1 つでしたが、Excel 2010 ではこれが 2 つに増えました。オプション パラメーターが増えても、このメソッドの使用に影響はありません。Excel 2003 でこのメソッドを使用し、パラメーターを 1 つしか渡さなかった場合も、同じコードは修正しなくても Excel 2010 で機能します。

Excel 2010 では、変更されたアイテムが 97 個あります。いずれも、潜在的に影響のある変更ではありません。これらのアイテムの変更は、“変更された” アイテムが含まれる既存のコードに影響しません。

したがって、Excel の以前の 4 つのバージョンとは異なる 882 個のメソッドとプロパティのうち、影響のあるものは 9 個だけです。

変更されたアイテムが、いずれも影響がないわけではありません。たとえば、PowerPoint では、Presentation.SaveAs メソッドで使用されるオプション パラメーター FileFormat の既定値が変更されました。PowerPoint 2003 では既定値が“1”(ppSaveAsPresentation) でしたが、PowerPoint 2010 では“11”(ppSaveAsDefault) です。そのため、このメソッドの FileFormat パラメーターに値を明示的に設定しないで使用している場合は、PowerPoint 2003 で作成したマクロを PowerPoint 2010 で実行したときに結果が期待と異なる可能性があります。したがって、このメソッドの使用方法によっては、変更が潜在的に影響すると言えます。

OCCI を使ってオブジェクト モデルの変更を検出できるか

Office Code Compatibility Inspector (OCCI) (英語) のようなツールは、マクロをスキャンして、前のバージョンから変更されたコードが含まれているかどうかを確認するために使用できます。OCCI は、変更されたアイテム、削除されたアイテム、または非推奨のアイテムの数を示すレポートを提供します。また、外部参照を使用していたり、64 ビットの Office 環境で動作すると明示的にマークされていない宣言がある場合、これらについても通知します (外部参照については、オペレーティング システムのアップグレードの一部として Office 2010 に移行する場合、特に注意する必要があります)。以下のスクリーン ショットは、OCCI を使用してマクロのある Excel ブックをスキャンしたときの結果の要約です。

OCCI では“removed”(削除済み) を“redesigned”(再設計済み) と表現します (用語が異なる理由は不明です)。

OCCI はすべての変更を検出するので、出力を並べ替えて、判断材料となる情報を見つけ出す必要があります。OCCI は“相違のあるもの”を報告するだけで、それがただちに修正が必要なものなのか、後回しにできるものなのかは特定しません。OCCI は、そのような高レベルの情報を提供しません。以下の表は、このギャップを埋め合わせるためのものです。ここには、すべての潜在的な影響のある変更を記載しました。これらについては、影響の有無をただちに評価する必要があります。使い方によって、これらのアイテムを含むコードは変更が不要な場合があります。したがって、この表をマクロに対処する‘クイック スタート’ガイドとして利用してください。ただし、いかなるツールも、この表でさえも、過信は禁物です。取り越し苦労となる恐れはあっても、マクロの動作を確認するために実際に実行してみることは、動作を確実に確認できる唯一の手段です。

まとめ

以下の表は、潜在的な影響のある変更の一覧であり、削除されたすべてのアイテムを含め、潜在的な影響のあるすべての変更されたアイテムを記載しています。この表を使用して、記載されたアイテムを使用している可能性があるコードを迅速に特定してください。OCCI などのツールを使用してすべての変更を検出することはできますが、この表からは Office 2010 にマクロを移行する際に影響を与えないオブジェクト モデルの変更が省かれているので、判断材料としてより役立つ (つまり利用価値のある) データを入手できます。

ツールを利用する際に困ることの 1 つは、一般にツールが提供するデータは技術的な質問 (「何が変更されたのか」など) への回答には役立っても、ビジネス上の質問 (「使用中のソリューションにどう影響するのか」など) への回答には役立たないことです。ツールは、トラブルシューティングの手間を自動化してはかどらせるには確かに役立ちますが、頼り過ぎるとお門違いの質問に回答するためにツールの出力データを援用することになりかねません。これは常に言えることですが、Office 2010 へのアップグレードに際してソリューションの動作を確認する最良の方法は、エンドユーザーによるテストを実施して、ソリューションを (可能であればテスト環境で) 実際に使用してみることです。

 

(上記の表は、この投稿の最後にあるリンクをクリックすると、.pdf ファイルとしてダウンロードできます)

詳細情報

以下のリンクから、各オブジェクト モデルの相違について記載した記事を参照できます。

 

これはローカライズされたブログ投稿です。原文の記事は、「Understanding potentially impactful changes in the Office 2010 object model」をご覧ください。