none
MS Excel Object Libraryの参照に失敗する RRS feed

  • 質問

  • Win7+VS2017でExcel(2003)オートメーションを行うアプリケーションを開発しています。
    従来、コンパイルが通り何の問題も無く開発できていたのですが、ユーザーからExcel2010で動作しないとクレームを受け、Office2003をアンインストールしてOffice2010を新規インストールして改版、納品しクレームは解消しましたが、こちらの開発環境ではExcel2003を常にターゲットにしているのでOffice2003を再インストールしたところ、参照が通らなくなり以前の開発環境に戻らなくなってしまいました。

    ↓ソースコード:以前の環境ではコンパイルできていました。

    Imports Microsoft.Office.Interop
    Imports Microsoft.Office.Interop.Excel

    Public Class ExcelAccess

        Public excelApp As Excel.Application
        Public excelBook As Excel.Workbook
        Public excelSheet As Excel.Worksheet

        Public Sub New()
            excelApp = New Excel.Application()
        End Sub

        Public Sub open()
            excelBook = excelApp.Workbooks.Open("C:\1.xls")
        End Sub

        'テストプログラムなのでClose処理は記述していない
    End Class

    参照マネージャーから
    Microsoft Excel 11.0 Object Library
    Microsoft Office 11.0 Object Library を参照しました。

    ↓すると参照状況がこの様な異常になりました。 (Excel に警告マークが付いている)

    ↓コンパイル時の警告は次の通りです。
    警告        COM 参照 "Excel" の依存関係を決定できませんでした。タイプ ライブラリ/DLL の読み込みエラーです。 (HRESULT からの例外:0x80029C4A (TYPE_E_CANTLOADLIBRARY))

    警告        参照コンポーネント 'Excel' が見つかりませんでした。        

    警告        タイプ ライブラリ "Excel" のラッパー アセンブリが見つかりません。次のことを確認してください。(1) COM コンポーネントが正しく登録されている。(2) ターゲット プラットフォームのビットが COM コンポーネントと同じである。たとえば、COM コンポーネントが 32 ビットの場合、64 ビットのターゲット プラットフォームは使用できません。


    コンパイルを正常に通すにはどうしたら良いのか御教授願います。

    2019年11月22日 3:11

回答

  • 過去、これに近い質問には的確な回答が付いていないので自分で解決方法を発見しました。

    (1)Office2003のインストールオプションでExcel,Word等のコンポーネントの「.Net  プログラミングサポート」をマイコンピューターからすべて実行 のオプションでインストールする。
    (2)VS2017の参照で、Excelと表示され警告マークの付いている項目を削除する。
    (3)VS2017の参照マネージャーで、COMファイルタブを選択し、参照先としてC:\Windows\assembly\GAC\Microsoft.Office.Interop.Excel\11.0.0.0__71e9bce111e9429c までフォルダーを開き、Microsoft.Office.Interop.Excel.dllを参照する。
    COMファイルタブ直下の画面でリスト表示されている中からMicrosoft Excel 11.0 Object Libraryをクリックして参照すると失敗する。
    参照プロパティーは、下図の様になる。

    (4)これで、ソリューションエクスプローラーの「参照」にはMicrosoft.Office.Interop.Excelという項目が表示されているはずである。こうなっていれば完了である。

    • 回答としてマーク huahi11112 2019年11月25日 6:08
    2019年11月25日 6:07