問題タブ [excel-udf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
16094 参照

excel - Excel 2007 UDF: 関数の説明、引数のヘルプを追加するには?

説明

COM サーバーでいくつかの Excel UDF を作成しています。fxを押したときに表示される標準のヘルプ (関数の挿入ダイアログ) を取得したいと思います。はい、カテゴリのドロップダウンに自分の COM サーバーが表示されていますが、

  • また、Equals、GetHashCode、GetType、および ToString も表示されます (これらは Excel ユーザーに公開するのはかなり望ましくありません)。
  • COM サーバーを選択すると、*Function Arguments*[1] ダイアログが表示され、引数情報も関数の説明もありません。

これが私が得る不自由です:

関数の挿入ダイアログ http://www.iwebthereforeiam.com/files/Insert%20function%20dialog.gif

Excel 関数の引数ダイアログ http://www.iwebthereforeiam.com/files/Function%20Arguments%20dialog.gif

質問

これを Excel に渡すためにメソッドに設定できる .NET 属性はありますか?

  • 機能の説明を提供できますか?
  • パラメータの説明を提供できますか?
  • 関数にカテゴリ名を付けて、ProgID よりも優れたものを取得できますか?

(ExcelDNA で実行するのは悲しいことに簡単に見えますが、私はその道をたどりません。govert のコード [カスタム属性、ある種のローダーなど] をエミュレートするのはかなり難しいようです。)


追加の背景

以前に Excel + COM サーバーを使用したことがない場合は、速度を上げるために役立つリソースがいくつかあります。

以前の StackOverflow の質問:
VB.NET で記述された COM Server for Excel をインストールしてオートメーション サーバー リストに登録するにはどうすればよいですか?
COM 公開 .NET プロジェクトを VB6 (または VBA) 参照ダイアログに追加する方法

その他のリソース:
.NET で Excel 用のユーザー定義関数を作成
する .NET COM アセンブリをビルドおよびデプロイする
C# でカスタム Excel ワークシート関数を作成する


編集 2009-10-20 14:10

を呼び出してみApplication.MacroOptionsましたSub New()

  1. Sub New() なし
    準許容: 関数はカテゴリ ProgID にリストされています。
  2. Shared Sub New()
    受け入れられません: ビルド時のエラーです。
    /blockquote>
  3. Sub New()
    受け入れられません: カテゴリは [関数の挿入] ダイアログに表示されません。

これは、MacroOptions と、Charles が推奨するより複雑なルートの両方に問題があると思われます。


編集 2009-10-20 14:55

良い面としては、実装するインターフェイスを作成するという Mike の推奨により、公開されていた迷惑な余分なメソッドが削除されました。


編集 2009-10-20 15:00

2007 年初頭のこの Microsoft の記事( Mike のリンク経由) は、このトピックに関するかなり完全な回答のようです。

オートメーション アドインと関数ウィザード

各オートメーション アドインには、Excel 関数ウィザードで独自のカテゴリがあります。カテゴリ名はアドインの ProgID です。オートメーション アドイン関数に別のカテゴリ名を指定することはできません。さらに、Function Wizard でオートメーション アドイン関数の関数の説明、引数の説明、またはヘルプを指定する方法はありません。


1ええと、StackOverFlow のバグです。明示的な HTML ul-list 内の文字列をイタリック体にできないようですか?

0 投票する
1 に答える
394 参照

excel - ExcelAutomationアドインUDFにアクセスできません

次の自動化アドインを作成しました。

私はそれを構築し、それはうまく登録されます。Excel 2003を開き、[ツール]-> [アドイン]に移動し、自動化ボタンをクリックすると、アドインがリストに表示されます。追加すると、アドインリストに表示されます。ただし、関数自体は表示されません。入力しても機能せず、関数ウィザードを見ると、アドインがカテゴリとして表示されず、関数がリストに含まれていません。

私はWindows7x86でExcel2003を使用しています。Visual Studio 2010でプロジェクトをビルドしました。このアドインは、VisualStudio2008でビルドされたWindowsXPで正常に機能しました。

0 投票する
3 に答える
18285 参照

c# - RtdServer を使用して C# でリアルタイム Excel オートメーション アドインを作成するにはどうすればよいですか?

仕事で RtdServer を使用して、リアルタイムの Excel オートメーション アドインを C# で作成する仕事を任されました。私は Stack Overflow で見つけた知識に大きく依存していました。私が学んだことすべてを結びつける方法を文書化することによって、感謝の意を表すことにしました。Kenny Kerr のExcel RTD サーバー: 最小限の C# 実装の記事は、私が始めるのに役立ちました。Mike RosenblumGovertのコメントが特に役に立ちました。

0 投票する
1 に答える
2470 参照

c# - RTD 関数をラップする C# で Excel オートメーション アドインを作成するにはどうすればよいですか?

RtdServer ベースのオートメーション アドインを使用しています:
RtdServer を使用して C# でリアルタイム Excel オートメーション アドインを作成するにはどうすればよいですか? .

VBA ラッパーの作成は簡単です。

これは機能します。次のように C# ラッパーを作成しようとしました。

Excel のセルに「=Countdown(150)」と入力すると、ConnectData によって返される初期値の 150 が表示されますが、更新されません。登録すべきコールバックはありますか? Application オブジェクトを正しくインスタンス化していますか? 私は何が欠けていますか?

ありがとう、

フランク

0 投票する
3 に答える
12697 参照

excel - 「Microsoft Office Excel は、別のアプリケーションが OLE アクションを完了するのを待っています。」平均?

ここで説明されているような RTD Excel オートメーション アドインが機能しています。この数式を含むシートを読み込もうとすると、断続的に次のエラーが表示されます。

Microsoft Office Excel は、別のアプリケーションが OLE アクションを完了するのを待っています。

いくつかのフォーラム ディスカッション (もう見つけられません) に従って、「Dynamic Data Exchange (DDE) を使用する他のアプリケーションを無視する」にチェックを入れたり外したりしました。どちらも機能しません。

Google はこのエラーに対して多くのヒットを生成しますが、解決策はありません。ここには古い知識ベースの記事がありますが、やはり解決策はありません。

このエラーの原因は何ですか? それを避けるために私にできることはありますか?

ありがとう!

0 投票する
1 に答える
994 参照

c# - エクセルの範囲を回復するExcel自動化アドイン機能

私はc#を使用してExcel2003自動化アドインを書いています。

私はこの記事をフォローしましたhttp://blogs.msdn.com/b/eric_carter/archive/2004/12/01/writing-user-defined-functions-for-excel-in-net.aspx

パラメータとしてExcel範囲オブジェクトを渡すことを含め、すべてが機能します。しかし、関数から範囲オブジェクトを返すことができませんでした。私の知識は主題に関して非常に限られています、どんな入力でも感謝します。

0 投票する
1 に答える
696 参照

excel - 計算モードに関係なく手動で計算されるExceludfをどのように記述しますか?

私は現在、外部プログラムの助けを借りていくつかの計算を実行するためにフォームを使用するマクロを持っています。別のプログラム、外部.exeが入力として使用するために、いくつかのワークシート値をファイルに書き込むだけです(そのプログラムはクローズドソースです)。次に、このプログラムはカスタム形式の出力を書き込みます。VBAでそれをスクラップしてから、ワークシートに戻り値を返します。マクロは、送信元と宛先の範囲が指定されているユーザーフォームを介して呼び出されます。

私がやろうとしているのは、ユーザーフォームを介して計算を呼び出す方法をUDFに置き換えることです。GUI方式では、計算の更新は面倒です。また、宛先範囲データでどのような計算が実行されたかを知ることもできません。このパスは、パフォーマンス上の懸念からUDFよりも選択されました。計算が非常に遅いため、外部プログラムをUDFとして呼び出すユーザーフォームコードの一部を再利用して、それを実行することはできません。速度が遅すぎるためです。VBAには非同期実行がないようです(Excel 2010のxllとは対照的です)。

考えられる解決策は、グローバルがtrueに設定されていない限り、実行を開始するとすぐにUDFを終了することです。特定のリボンボタンから再計算が呼び出されない限り、そのグローバルは常にfalseになります。問題は、これが常にUDFを実行し、それらの範囲を常に#N / A値に送信するため、これらの範囲を参照できないことです。もう1つは、偽の数式、つまり、パラメーターと宛先範囲の両方を指定するセルへのコメントを作成することです。これにも多くの問題があります。

それで。偽の非同期計算UDFを実装する方法について何かアイデアはありますか?

ありがとう!

0 投票する
1 に答える
250 参照

excel - Excel UDF の末尾の単位を処理しますか?

重複の可能性:
UDF 上での Excel 組み込み関数の使用

私のExcel UDFは現在、数値データと単位で構成される文字列を返します1234 kg。ユーザーにとっては簡単で読みやすいですがSum()Average()、 などの Excel 組み込み関数を使用した基本的な計算が妨げられるという問題があります。

上記のフォーマット、つまり1234 kg式を使用すると、末尾の単位が削除され=Sum()ない限り、正しい結果が得られません。kg

私の質問ですが、単位をそのままにして計算を許可する方法はありますか? Excel1234 kgは文字列値ではなく数値として識別できますか?

0 投票する
28 に答える
456472 参照

excel - 列番号を文字に変換する関数?

数値から列文字を返すことができるExcelVBA関数を持っている人はいますか?

たとえば、100を入力すると。が返されCVます。

0 投票する
1 に答える
686 参照

c# - 連続していないセルを Excel UDF に渡す方法

myUDFでは、「A1:A12」のようなセルの範囲を参照できますが、「A1、B4、H3」などの連続していないセルを参照するにはどうすればよいです
か連続していないセルではなく、文字列とセルの範囲を取る