3

私のアドインはxlaでしたが、現在はexcelDNAを使用しているため、xllになります。以前のバージョンのMyアドインで作成されたスプレッドシートを開くと、UDFの場合、パスがxlaのmyUDFが表示されます。例:「C:\ ProgramFiles \ Installation folder \ MyUDFs.xla!MyUDF」、[編集]リンクをクリックしてソースを「C:... \ MyUDFs.xll」に変更すると、「Excelでは更新できません」というポップアップが表示されます。リンクを更新するには、すべてのリンクソースファイルを開きます([データ]タブの[リンクの編集]をクリックします)。すべての計算が更新されていることを確認します。F9キーを押します。[OK]をクリックすると、MyUDFのパスが次のように変更されます。 xlaからxll、例:C:\ Program Files \ Installation folder \ MyUDFs.xll!MyUDFクライアントの場合、これにより、以前のバージョンで作成されたすべてのスプレッドシート(​​100以上の場合があります)が破損します。すべてのMyUDFからパスを削除するVBAコードを記述できることはわかっています。

クライアントが問題を解決するためのより良い/より便利な方法があるのだろうか?

4

2 に答える 2

2

内部的には、Excel は .xla 関数と .xll 関数に対して異なる情報を格納します。.xla の関数としてシートに入力された関数と互換性のある .xll を作成できるようにするのは簡単ではありません。

.xmlx ファイル内を少し調べてみると、Excel がこの情報をどのように格納しているかを確認することもできます。

この Wilmott の議論は関連があるかもしれません: http://www.wilmott.com/messageview.cfm?catid=10&threadid=79763まだ変換されていないスプレッドシートを開くときの「修正」ボタン。

于 2011-06-20T22:55:36.297 に答える
0

これが私が最終的に使用するソリューションです。私は xla アドインを xll に保持し、同じ MyUDF を同じ署名で登録し (ほとんど同じオプションのパラメーターは xll ではサポートされていませんが、私の xla では使用されています)、IsHidden = true を設定します。したがって、挿入関数リストに表示される MyUDF は 1 つだけです。=MyUDF と入力して関数ウィザードをクリックすると、関数の引数ウィンドウに xll のバージョンが表示されます。Excel 2007 で =MyUDF と入力すると、ドロップダウンに関数がありません。Excel 2010 で =MyUDF と入力すると、ドロップダウンが表示されます。そのため、ソリューションは Excel 2010 でより適切に機能します。

于 2015-06-17T18:57:56.223 に答える