Microsoft Office アプリケーションの COM 呼び出しでエラー

Microsoft Office のアプリケーションを操作するようなソフトウェアで、下記のようなエラーが表示されることがあります(下記は Excel 操作時のエラー)。

型 'Microsoft.Office.Interop.Excel.ApplicationClass' の COM オブジェクトをインターフェイス型 'Microsoft.Office.Interop.Excel._Application' にキャストできません。IID '{000208D5-0000-0000-C000-000000000046}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました: タイプ ライブラリ/DLL の読み込みエラーです。(HRESULT からの例外: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))。

このエラーの修正方法について記載します(必ず修正できるとお約束するものではありません)。

エラーの原因(バージョンの混在に注意!!)

このエラーの原因の 1 つとして考えられるのが、
複数のバージョンの Office アプリケーションを 1 つの PC に混在インストールした後、いずれかのバージョンをアンインストールした場合
です。この場合、レジストリに不整合が発生することがあります。
具体的には、アンインストールされて存在しなくなったバージョンの情報がレジストリに残ったままになり、プログラムが COM 呼び出し(他のアプリケーションを操作するための呼び出し)をするとその存在しないバージョンの情報を参照しにいってエラーが発生することがあります。
私の身近(ある会社のオフィス内)で実際にあった例では、Office 2010 と 2013 を混在インストールした後で 2013 をアンインストールすると高確率で(必ず?)このエラーに遭遇しました。
Web 検索してみると、同じ経験をされた方が他にもいるようでした。

また、別の例(Web で見つけた記事)として、Office 2007 がインストールされている環境に追加で Project 2010 をインストールしたらこのエラーが出るようになった、という記事もありました。この場合は、インストールされている Excel 2007 のレジストリに実態の無い Excel 2010 の情報が追加されてしまい、プログラムがそちらを参照しようとしてエラーが出たようです。

解決方法はいずれも同じです。

MEMO
個人的には、Office 2010 をインストールした PC に追加で Project 2013 をインストールしたら、開発環境やその他でエラーが出まくって、ひどい目に遭った経験があります。

修正方法1: 「Officeの修復」

このエラーを修正するには、まず「Officeの修復」を試してみることをお勧めします。「Office の修復」のやり方が分からない場合は、検索すれば十分な情報が見つかると思うので、調べてみてください。
今回解説しているエラーに限らず、Office アプリケーションの調子がおかしくなったら、とりあえず「Office の修復」を試してみると解決することがあります。
それでも直らない場合は。。。

修正方法2:Office の再インストール

Office の再インストールも試す価値があると思います。それでもダメならば。。。

修正方法3:レジストリの修正

レジストリ(Windows のデータベース)の修正を試してみましょう(実はこの修正方法が本命です)。
レジストリに残っている不要な情報を削除すると、現在インストールされているバージョンの情報をプログラムがきちんと参照するようになり、正しく動作する可能性が高いです。
レジストリの修正の経験がある方は、前述の 2 つの方法をスキップして、最初にレジストリを調べてみると手っ取り早いかもしれません。

注意
お約束の注意事項です:

レジストリの修正を行う場合、よく理解せずに関係ないところを変更したりすると Windows 自体が正常に動作しなくなる可能性もあるので、十分注意してください。
何か不具合が生じても、こちらとしては一切の責任を取ることはできません。自己責任で行ってください。

MEMO
上記の注意事項は、その通りなのですが、
このような注意書きを見ると「恐くてレジストリを触れない」という方もいらっしゃるようです。
でも正しい手順で行うならば、恐がる必要はありません。レジストリを編集できるようになれば、Windows の世界で出来ることが増えて便利です。

  • 変更を加える前にレジストリ全体のバックアップを取っておくか、変更する部分ごとに先にバックアップを取るようにする。
  • 万が一、レジストリの修正によって不具合が生じたときのために、バックアップしたデータを使用して元に戻す方法を調べておく。
  • 関係ないところを触らない。
  • 理解できていないまま変更しない。

といったことを守るようにして、挑戦してみましょう。

前提知識1:Office アプリケーションの IID を知っておく

IID とは、Interface ID(インターフェイス識別子)の頭文字であり、特定の COM インターフェイス(呼び出しルール)を識別するために割り当てられた GUID(重複しない識別子)のことです。
Office の主要アプリケーションの IID は下記の通りです。

Microsoft Office{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}
Microsoft Excel{00020813-0000-0000-C000-000000000046}
Microsoft Word{00020905-0000-0000-C000-000000000046}
Microsoft PowerPoint{91493440-5A91-11CF-8700-00AA0060263B}
Microsoft Outlook{00062FFF-0000-0000-C000-000000000046}
MEMO
アプリケーションの IID は Visual Studio 等でも調べることができます。

前提知識2:Office アプリケーションのタイプライブラリのバージョンを知っておく

Office アプリケーションのタイプライブラリ(他のプログラムから COM を利用するために参照されるもの)にはバージョンがあります。このバージョンは、ユーザーに馴染みのあるアプリケーションのバージョン(Excel の "2013" とか、VBA の Version プロパティの "15" 等)とは異なるので注意してください。

アプリケーションのバージョンとタイプライブラリのバージョンの対応は下記の通りです(クリックまたはタップすると表が開きます)。
調べきれてないところもありますがご容赦ください。

アプリケーションのバージョンタイプライブラリのバージョン
Office 2003(Ver.11)2.3
Office 2007(Ver.12)2.4
Office 2010(Ver.14)2.5
Office 2013(Ver.15)2.6 または 2.7
Office 2016(Ver.16)2.8
Excel 2003(Ver.11)1.5
Excel 2007(Ver.12)1.6
Excel 2010(Ver.14)1.7
Excel 2013(Ver.15)1.8
Excel 2016(Ver.16)1.9
Word 2003(Ver.11)8.3
Word 2007(Ver.12)8.4
Word 2010(Ver.14)8.5
Word 2013(Ver.15)8.6
Word 2016(Ver.16)8.7
PowerPoint 2003(Ver.11)
PowerPoint 2007(Ver.12)2.9
PowerPoint 2010(Ver.14)2.a
PowerPoint 2010(Ver.14)2.10.0.0
PowerPoint 2013(Ver.15)2.b
PowerPoint 2016(Ver.16)2.c
Outlook 2003(Ver.11)9.2
Outlook 2007(Ver.12)9.3
Outlook 2010(Ver.14)9.4
Outlook 2013(Ver.15)9.5
Outlook 2016(Ver.16)9.6

修正の手順

修正手順は下記の通りです。

  1. レジストリエディタを起動します。
  2. 検索オプションを下記のように設定します(「キー」と「完全に一致するものだけを検索」の2つにチェックを入れて、他のチェックを外す)。

  3. 「検索する値」に "{アプリケーションのIID}" をコピペします。たとえば Excel なら "{00020813-0000-0000-C000-000000000046}" をコピペします。波括弧 { } も含める点に注意してください。

  4. 検索を実行する前に、レジストリの一番上(コンピューター)を選択しておきます。

  5. 検索を実行します。
    検索がヒットしたら、その下位フォルダを表示します。タイプライブラリのバージョンのキー(フォルダアイコン)が表示されます。
    現在インストールされているアプリケーションのバージョンのキーがあるはずです。それに加えて(並列して)、すでにアンインストールしたバージョンのキーが残っていたら、アンインストールしたバージョンのキーを削除します。

    ちなみに上図は、Excel のタイプライブラリのバージョン 1.9(つまり、Excel 2016 のもの)が表示されているところです。これは、現在の私の PC のレジストリを表示しているところで、正常な状態を示しています。

  6. 手順 5. を繰り返します(F3 を押すと続けて検索できます)。
    おそらく 1 アプリケーションにつき 2 箇所~ 4 箇所ほどヒットすると思います。
  7. 他の主要アプリケーションについても、手順 3. から繰り返します。
  8. レジストリエディタを閉じて、動作を確認してください。

コメントの投稿

avatar
  購読する  
通知を受け取る対象