none
Excel-DNAでクラスライブラリを参照するとエラーが発生する RRS feed

  • 質問

  • [質問]
    Excel-DNA経由でC#で作成したクラスライブラリを参照したところ、エラーが発生します。原因と対策をアドバイス願います。
    Excel-DNAでxllアドインを記述しExcel式の関数を拡張する試みです。

    [エラーの再現手順]
    (1) book1.xlsx(Excel2010)を起動し、開発タグ→アドイン→参照でMyExcelDna32.xllを選択すると、有効なアドインにMyExcelDna32が追加される。
    (2) OKボタンをクリックすると、エラーダイアログが表示される。エラーメッセージは下記(2行)の通りです。
    There were errors when compiling project:
    C:\Users\87033\AppData\Local\Temp\q2hujf32.0.vb(1,0) : error BC30636: '>' が必要です。

    [エラーについての補足事項]
    ・クラスライブラリを参照せず、MyExcelDna32.dnaに直接C#を記述したところ、TestCalcが正常に実行できた。
    ・何らかの原因で、Excel-DNAがクラスライブラリを見つけることができないのが原因と考え、試しにMyExcelDna32.dllのPathをでたらめな参照先に変更したところ、同様のエラーが再現された。具体的には、<ExternalLibrary Path="AddinClassLibrary.dll" />を<ExternalLibrary Path="xxxx.dll" />に変更したが同じエラーメッセージが表示された。
    ・MyExcelDna32.dnaのPath指定が誤っているのでしょうか?あるいは、AddinClassLibrary.dllの位置を知らせるために別途必要な登録を忘れているのでしょうか?AddinClassLibrary.dllファイルは、開発マシンから実行マシンのフォルダに単純コピーしました。

    [実行環境]
    ・Windows7(32bit) + Excel 2010 + .NET Framework 4.5.1
    ・Excel-DNAのバージョンはExcel-DNA Ver.0.30
    ・下記ファイル(4個)をデスクトップに作成したtempフォルダに格納した。
      ・MyExcelDna32.: xll Excel-DNAのExcelDna.xllをリネーム
      ・MyExcelDna32.: dna テキストファイル
      ・book1.xlsx : Excel2010の空シート
     ・AddinClassLibrary.dll : C#で作成したクラスライブラリ

    [MyExcelDna32.dnaファイルのソースコード]
    <DnaLibrary RuntimeVersion="v4.0">
    <Reference Name="Microsoft.Office.Interop.Excel" />
    <![CDATA[
    <ExternalLibrary Path="AddinClassLibrary.dll" />
    ]]>
    </DnaLibrary>

    [AddinClassLibrary.dllのソースコード]

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    namespace AddinClassLibrary
    {
        public class MyAddin
        {
            public static double TestCalc(double item1, double item2)
            {
                return Math.Sqrt(item1 * item1 + item2 * item2);
            }
        }
    }

    [AddinClassLibrary.dllのコンパイル条件]
    ・開発環境は Visual Studio 2013
    ・テンプレートはC#のクラスライブラリを指定した。
    ・.NET Frameworkのバージョンは.NET Framework 4.0を指定した。
    ・snkファイルを使用して厳密名を署名済み。

    [参考リンク先]
    Excel-DNA
    http://exceldna.codeplex.com/

    以上

    C#開発者

    2014年1月20日 1:57

回答

  • CDATAが余計ですね

    <DnaLibrary RuntimeVersion="v4.0">
    <ExternalLibrary Path="AddinClassLibrary.dll" />
    </DnaLibrary> 
    

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク MicroVAX 2014年1月20日 5:36
    2014年1月20日 3:27

すべての返信

  • 自己レスです。

    追加の記述です。

    [MyExcelDna32.dnaファイルのソースコード中の不要な記述
     <Reference Name="Microsoft.Office.Interop.Excel" />
    を削除しても依然エラーが発生します。

    [MyExcelDna32.dnaファイルのソースコード(修正版)]
     <DnaLibrary RuntimeVersion="v4.0">
     <![CDATA[
     <ExternalLibrary Path="AddinClassLibrary.dll" />
     ]]>
     </DnaLibrary>

    以上


    C#開発者

    2014年1月20日 2:17
  • CDATAが余計ですね

    <DnaLibrary RuntimeVersion="v4.0">
    <ExternalLibrary Path="AddinClassLibrary.dll" />
    </DnaLibrary> 
    

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク MicroVAX 2014年1月20日 5:36
    2014年1月20日 3:27
  • ご回答ありがとうございました。

    ご指摘の部分を修正したところ、正常に実行できました。


    C#開発者

    2014年1月20日 5:37