none
VBでMicrosoft.Office.Interop.ExcelをImportするとエラーになる RRS feed

  • 質問

  • Visual Vasic 2010 Expressの一つのソリューションの、二つのプロジェクトで同じように Microsoft.Office.Interop を Importすると、最初にImportしたプロジェクトでは問題なく使えるのですが、二つ目のプロジェクトのImportの部分で以下のエラーが報告されます。

    インポート'Microsoft.Office.Interop'で指定された名前空間または型が、パブリックメンバーを含んでいないか、または見つかりません。名前空間または型が定義されていて、少なくとも1つのパブリックメンバーを含んでいることを確認してください。また、インポートされた要素名がエイリアスを使用していないことを確認して下さい。

    実際の記述は以下です。

    【宣言部】
    Import Microsoft.Office.Interop

    【Main()部】
    Module Module1
    Main()
    Dim xlApp As Excel.Application
    .
    .
    End Sub
    End Module

    因みに、Microsoft Excel 12.0 Object Library を参照設定しています。

    ひとつのソリューションで、参照設定したLibraryのImportは一回だけという制限があるのでしょうか。
     
    どなたか対処方法をご存じの方はおられないでしょうか。

    よろしくお願い申します。

    2011年12月12日 10:30

回答

  • 考えられる可能性です。

    1. 参照設定が片側にしか実はされていない。
      両方とも参照設定されているか確認する。
    2. DLL プロジェクトと EXE プロジェクトの構成で、両方が COM 参照し、EXE プロジェクトは DLL プロジェクトをプロジェクト参照している状況でエラーになる。
      この場合、参照設定で COM を追加しないでください。
      DLL プロジェクトと EXE プロジェクトで別々の相互運用ライブラリが生成されて互換性がなくなっている恐れがあります。

    2 の症状が発生しているとすれば、PIA(プライマリ相互運用アセンブリ) を利用するように整える必要があります。
    Excel 2007 はプライマリ相互運用アセンブリがあるはずなので、基本的にはそれを利用するべきですが、互換性のないアセンブリが自動生成されているのであれば、プライマリ相互運用アセンブリのインストール からかな。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク karankoron 2011年12月13日 0:26
    • 回答としてマークされていない karankoron 2011年12月13日 0:34
    • 回答としてマーク karankoron 2011年12月13日 0:34
    2011年12月12日 14:19
    モデレータ

すべての返信

  • 考えられる可能性です。

    1. 参照設定が片側にしか実はされていない。
      両方とも参照設定されているか確認する。
    2. DLL プロジェクトと EXE プロジェクトの構成で、両方が COM 参照し、EXE プロジェクトは DLL プロジェクトをプロジェクト参照している状況でエラーになる。
      この場合、参照設定で COM を追加しないでください。
      DLL プロジェクトと EXE プロジェクトで別々の相互運用ライブラリが生成されて互換性がなくなっている恐れがあります。

    2 の症状が発生しているとすれば、PIA(プライマリ相互運用アセンブリ) を利用するように整える必要があります。
    Excel 2007 はプライマリ相互運用アセンブリがあるはずなので、基本的にはそれを利用するべきですが、互換性のないアセンブリが自動生成されているのであれば、プライマリ相互運用アセンブリのインストール からかな。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク karankoron 2011年12月13日 0:26
    • 回答としてマークされていない karankoron 2011年12月13日 0:34
    • 回答としてマーク karankoron 2011年12月13日 0:34
    2011年12月12日 14:19
    モデレータ
  • Azlean 様

    ありがとうございます。

    ご提示頂いた解決策のうち、1.の処理で問題解決致しました。

    結果的には非常に単純なミスが原因でしたが、参照設定の確認の仕方に問題があったこともわかりました。

    VB2010の ”プロジェクト(P)” の ”すべてのファイルを表示O)” を実行しないと "参照設定" の項目が表示されないということを知らなかった為、正確な参照設定の状況が把握できていませんでした。

    お陰さまで問題解決です。ありがとうございました。

    今後ともよろしくお願い申します。

    追伸。

    オペミスをしてしまい、”回答としてマーク”の表示がややこしいことになってしまいました。申し訳ありません。

    文句なく”回答としてマーク”です。

    2011年12月13日 0:46