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 の情報が追加されてしまい、プログラムがそちらを参照しようとしてエラーが出たようです。
解決方法はいずれも同じです。
個人的には、Office 2010 をインストールした PC に追加で Project 2013 をインストールしたら、開発環境やその他でエラーが出まくって、ひどい目に遭った経験があります。
修正方法1: 「Officeの修復」
このエラーを修正するには、まず「Officeの修復」を試してみることをお勧めします。「Office の修復」のやり方が分からない場合は、検索すれば十分な情報が見つかると思うので、調べてみてください。
今回解説しているエラーに限らず、Office アプリケーションの調子がおかしくなったら、とりあえず「Office の修復」を試してみると解決することがあります。
それでも直らない場合は。。。
修正方法2:Office の再インストール
Office の再インストールも試す価値があると思います。それでもダメならば。。。
修正方法3:レジストリの修正
レジストリ(Windows のデータベース)の修正を試してみましょう(実はこの修正方法が本命です)。
レジストリに残っている不要な情報を削除すると、現在インストールされているバージョンの情報をプログラムがきちんと参照するようになり、正しく動作する可能性が高いです。
レジストリの修正の経験がある方は、前述の 2 つの方法をスキップして、最初にレジストリを調べてみると手っ取り早いかもしれません。
お約束の注意事項です:
レジストリの修正を行う場合、よく理解せずに関係ないところを変更したりすると Windows 自体が正常に動作しなくなる可能性もあるので、十分注意してください。
何か不具合が生じても、こちらとしては一切の責任を取ることはできません。自己責任で行ってください。
上記の注意事項は、その通りなのですが、
このような注意書きを見ると「恐くてレジストリを触れない」という方もいらっしゃるようです。
でも正しい手順で行うならば、恐がる必要はありません。レジストリを編集できるようになれば、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} |
前提知識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 |
修正の手順
修正手順は下記の通りです。
- レジストリエディタを起動します。
- 検索オプションを下記のように設定します(「キー」と「完全に一致するものだけを検索」の2つにチェックを入れて、他のチェックを外す)。
- 「検索する値」に “{アプリケーションのIID}” をコピペします。たとえば Excel なら “{00020813-0000-0000-C000-000000000046}” をコピペします。波括弧 { } も含める点に注意してください。
- 検索を実行する前に、レジストリの一番上(コンピューター)を選択しておきます。
- 検索を実行します。
検索がヒットしたら、その下位フォルダを表示します。タイプライブラリのバージョンのキー(フォルダアイコン)が表示されます。
現在インストールされているアプリケーションのバージョンのキーがあるはずです。それに加えて(並列して)、すでにアンインストールしたバージョンのキーが残っていたら、アンインストールしたバージョンのキーを削除します。ちなみに上図は、Excel のタイプライブラリのバージョン 1.9(つまり、Excel 2016 のもの)が表示されているところです。これは、現在の私の PC のレジストリを表示しているところで、正常な状態を示しています。
- 手順 5. を繰り返します(F3 を押すと続けて検索できます)。
おそらく 1 アプリケーションにつき 2 箇所~ 4 箇所ほどヒットすると思います。 - 他の主要アプリケーションについても、手順 3. から繰り返します。
- レジストリエディタを閉じて、動作を確認してください。
どうしても古いバージョンのOfficeで確認したいことがあったのですが、エラーがでて困り果てていました。無事、解決できました。感謝ですm(__)m
困り果てて、ここに辿り着き、助かりました。ありがとうございました。
米村威様
お役に立ったようで良かったです。^^