none
Visual Studio2008 COMクラスをEXCEL2000で使えない RRS feed

  • 質問

  • こんにちは。お世話になります。

    このたび、VisualStuido2008(std)のVB(.NET2.0)にて、COMクラスを作成し、VBS、VB6、EXCEL(VBA)などの言語が使用することを考えています。
    とくに変わったメソッドもなく、以下のように作成し、実行機にて、VBS、VB6での動作確認がとれました。

    ところが、EXCEL2000(VBA)で使おうとすると、
    「ファイル またはアセンブリ名comTest.dll、またはその依存関係の1つがみつかりませんでした」のエラーがでてしまいます。

    VBS、VB6で動いているので、コード上の問題はないような気がしているのですが、何が原因でしょうか?




    <ComClass(TEST.ClassId, TEST.InterfaceId, TEST.EventsId)> _
    Public Class TEST

    #Region "COM GUID"
        ' これらの GUID は、このクラスおよびその COM インターフェイスの COM ID を
        ' 指定します。この値を変更すると、
        ' 既存のクライアントはクラスにアクセスできなくなります。
        Public Const ClassId As String = "3efebe59-3661-4f38-bc92-2325960b1ce6"
        Public Const InterfaceId As String = "54787dc5-ab6b-4e47-995a-3694b1dea461"
        Public Const EventsId As String = "a77671ca-2a98-4533-b0fc-0b32b840dc7b"
    #End Region

        ' 作成可能な COM クラスにはパラメータなしの Public Sub New() を指定しなければ
        ' なりません。これを行わないと、クラスは COM レジストリに登録されず、
        ' CreateObject 経由で
        ' 作成できません。
        Public Sub New()
            MyBase.New()
      End Sub

     
      Public Function GetFolderPath(ByVal folder As Environment.SpecialFolder) As String

        Return Environment.GetFolderPath(folder)

      End Function

      Public Function GetMyVerSion() As String

        Return "1.0.1"

      End Function

    End Class

     

    2009年10月13日 11:18

回答

  • アースワーム さん、

    こんにちは!
    フォーラム オペレーターの服部 清次です。

    私の方で調べてみましたところ、関連のありそうなサポート技術情報が公開されていました。

    ● 「Word 2003 および以前のバージョン、または Excel 2003 およびそれ以前のバージョンでは、VBA から.NET Framework 2.0のアセンブリを読み込むことはできません」: http://support.microsoft.com/kb/948461/ja (機械翻訳)

    上記のページでは、この問題の原因と解決策について説明されていますので、一度確認されてみてはいかがでしょうか?
    なお、こちらのサポート技術情報は機械翻訳となっていますので、、、もし分かりにくい箇所などがありましたら、お気軽にお尋ねください。 (^^;)

    こちらの情報がお役に立てることを願っています。
    それでは、また! (^_^)/


    _______________________________________________
    マイクロソフト株式会社 フォーラム オペレーター 服部 清次

    2009年10月26日 0:54
  • 服部様
    高橋様

    お世話になっております。
    アースワームです。
    返信は遅くなりまして大変申し訳ございません。

    服部様のご回答を拝見しました。

    残念ながら、教えていただいたことによると、本件を採用するのは難しそうです。

    VBA/VBS/.NET 共通で、コードの再利用ができる方法(DLL)を探しているのですが、
    基本的な部分がそもそも違うので、仕方ないです。

    ありがとうございました。


    2009年11月15日 11:39

すべての返信

  • アースワーム さん、

    こんにちは!
    フォーラム オペレーターの服部 清次です。

    私の方で調べてみましたところ、関連のありそうなサポート技術情報が公開されていました。

    ● 「Word 2003 および以前のバージョン、または Excel 2003 およびそれ以前のバージョンでは、VBA から.NET Framework 2.0のアセンブリを読み込むことはできません」: http://support.microsoft.com/kb/948461/ja (機械翻訳)

    上記のページでは、この問題の原因と解決策について説明されていますので、一度確認されてみてはいかがでしょうか?
    なお、こちらのサポート技術情報は機械翻訳となっていますので、、、もし分かりにくい箇所などがありましたら、お気軽にお尋ねください。 (^^;)

    こちらの情報がお役に立てることを願っています。
    それでは、また! (^_^)/


    _______________________________________________
    マイクロソフト株式会社 フォーラム オペレーター 服部 清次

    2009年10月26日 0:54
  • アースワームさん、こんにちは。
    フォーラムオペレーターの高橋春樹です。

    MSDNフォーラムのご利用ありがとうございます。

    弊社服部から参考となるサポート情報を紹介させて頂いたと思うのですが、確認して頂けたでしょうか?
    今回服部からの投稿が有用な情報だと思いましたので、勝手ながら、回答マークを付けさせて貰いました。
    もし、不適切と思いましたら、回答マークを削除することも可能なので、そのときはお願いします。

    今後ともMSDNフォーラムをよろしくお願いします(^-^)


    マイクロソフト株式会社 フォーラム オペレーター 高橋春樹
    2009年11月9日 9:16
  • 服部様
    高橋様

    お世話になっております。
    アースワームです。
    返信は遅くなりまして大変申し訳ございません。

    服部様のご回答を拝見しました。

    残念ながら、教えていただいたことによると、本件を採用するのは難しそうです。

    VBA/VBS/.NET 共通で、コードの再利用ができる方法(DLL)を探しているのですが、
    基本的な部分がそもそも違うので、仕方ないです。

    ありがとうございました。


    2009年11月15日 11:39