質問者
Office2010が入っているPCで、Interop.Excel.DLLを使用したExcel出力でエラー

質問
-
Visual Basic 2008 Expressにて作成した、Interop.Excel.DLLを使用したExcel出力アプリにて
後述の条件を満たすOffice2010が入っているPCで、以下のエラーが発生します。
CLSID {00024500-0000-0000-C000-000000000046}を含むコンポーネントのCOMクラス ファクトリを取得中に、次のエラーが発生しました:
80040154。詳細:System.Runtime.InteropServices.COMException (0x80040154): CLSID {00024500-0000-0000-C000-000000000046} を含むコンポーネントの COM クラス ファクトリを取得中に、次のエラーが発生しました: 80040154。
Office2010だけが入っているか、あるいは、Office2007よりも先にOffice2010が入っているとエラーが発生します。
Office2007をインストールした後にOffice2010をインストールした場合だけ、エラーが発生しません。しかしこの場合は、Office2010とOffice2007を1台のPCに入れる必要があります。
Office2010の後にOffice2007を入れてもエラーになります。この後に、Office2010をアンインストールするとエラーが発生しません。
どうしたら直るか、同じケースに遭遇した方いらっしゃいませんでしょうか?
※マイクロソフト サポート オンラインの有料サービス(Web)も利用しようとしたんですが、サイトが途中で応答しなくなって、できませんでした。
※※クレジット決済されるのかどうかが気になりますが。
すべての返信
-
同一内容のようなのでリンクしておきます。
http://ap.atmarkit.co.jp/bbs/core/vblab/23814
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。 -
記載が漏れていて大変失礼しました。実行OSは
Windows XP Home 32bit
Windows XP Professional 32bit
Windows 7 Home 32bit
Windows 7 Home 64bit
です。上記すべてで同じ現象が起きます。
64bitに入れたoffice2010は評価版だったんですが、
Office2010のスタートメニューからパスを見たところ
C:\Program Files (x86)\Common Files\microsoft shared\Virtualization Handler
だったので、32bit用が入っていると思います。
-
Office 2010に関して、64bitOSにOffice 2010 64bit版を入れたものと、32bit版を入れたものに関して
以下の違いがありました。64bitのOfficeでは正常動作。32bitのOfficeでは下記のエラーが出ました。See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box. ************** Exception Text ************** System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=多分hogehoge' or one of its dependencies. 指定されたファイルが見つかりません。 File name: 'Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=多分hogehoge' at ExecTest.Form1.Button1_Click(Object sender, EventArgs e) at System.Windows.Forms.Control.OnClick(EventArgs e) at System.Windows.Forms.Button.OnClick(EventArgs e) at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ButtonBase.WndProc(Message& m) at System.Windows.Forms.Button.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. Note: There is some performance penalty associated with assembly bind failure logging. To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
私どものテスト環境では下記のエラーが表示されました。
#個人としてはこれ以上調べようがorz
素人目にもわかる違い:PrimaryInteropAssemblyNameに関するToken情報が全部抜け落ちている64bit版:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}] [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7] "PrimaryInteropAssemblyName"="Microsoft.Office.Interop.Excel, Version=14.0.0.0, Culture=neutral, PublicKeyToken=たぶんhogehoge" @="Microsoft Excel 14.0 Object Library" [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7\0] [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7\0\win32] @="C:\\Program Files\\Microsoft Office\\Office14\\EXCEL.EXE" [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7\FLAGS] @="0" [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7\HELPDIR] @="[{00020813-0000-0000-C000-000000000046}]"
32bit版
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}] [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7] @="Microsoft Excel 14.0 Object Library" [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7\0] [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7\0\win32] @="C:\\Program Files\\Microsoft Office\\Office14\\EXCEL.EXE" [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7\FLAGS] @="0" [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7\HELPDIR] @="[{00020813-0000-0000-C000-000000000046}]"
- 編集済み ChukiMVP 2010年8月15日 6:53 たぶんホゲホゲ