問題タブ [excel-dna]
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.
vba - .XLLからアセンブリバージョンを取得する方法(DLLがXLLに変換される場合)
ExcelDnaを使用して(VB.NETプロジェクトの)dllをxllに変換しました.xllにはアセンブリバージョンが含まれていますか?そうでない場合..どうすれば.xllファイルをバージョン管理できますか?これを実行したら、VBAコードでプログラムによってアセンブリバージョンを取得する必要があります。助けていただければ幸いです。
excel-dna - ExcelDNAを使用してセルを選択するにはどうすればよいですか?
XlCall.Excel(XlCall.xlfCaller)を介して参照している特定のセルにフォーカスを強制したいと思います。VSTOでこれを行う方法を知っていますが、ExcelDNAでこれを行う方法はありますか?
c# - Excel DNA - 引数はスプレッドシートから機能しますが、vba からは機能しません
これは私には少し奇妙です。
次のコードがあります。
次のようにスプレッドシートから引数を入力すると、完全に機能します。
[test] はワークブック内の範囲で、クエリは次のように機能します。
attach database 'a.db' as d1
select * from d1.main
今、VBAで次のことをすると
これは動作しません。「タイプが一致しません」というエラーが表示されます。なぜこれが私を夢中にさせる大きな助けになるのか、どんな入力でも!
c# - Excelにハンドラーを追加する方法ExcelDNAを使用してイベントを計算する
ExcelDNAアドインからExcelのすべてのシートのBeginCalculateイベントとEndCalculateイベントをリッスンし、初期化コードを実行できるようにしたいと思います。これを行う方法はありますか?
c# - Excel-DNA で指定された .chm ファイルが Excel で開かない
次の属性 (ここで説明) を使用して、UDF のヘルプ ファイルを Excel で表示しようとしています。
残念ながら、「この機能のヘルプ」リンクをクリックしても何も起こりません。次のように参照を無効にすると:
Excel から「ヘルプ参照が無効です」というポップアップが表示され、タグを削除すると「ヘルプがありません」というポップアップが表示されるので、この属性が正しく読み取られていることがわかります。
ヘルプ ファイルは .xll ファイルと同じディレクトリにあり、Windows 7 マシンで MS Office 2010 (64 ビット) を使用しています。アドインの残りの機能は正常に動作します。この問題の原因となっているIDを見つけるのを手伝ってくれる人はいますか?
また、好奇心から、ヘルプファイル名の後の「!102」が何を意味するのか、誰が知っていますか?
c# - クラス ライブラリに埋め込まれたファイルを変更し、ファイルを保存します
私はこれを数週間調査してきましたが、解決策を見つけるのに苦労しています。ここにやや一般的な質問を投稿して、洞察を得たいと思っていました.
リソース (.xlsm) を埋め込んだクラス ライブラリ (この場合は .xll) があります。ご存じないかもしれませんが、.xll は Excel に関連付けられているため、誰かが .xll を開くと、Excel のインスタンスに読み込まれます。私のシナリオでは、その .xll が Excel に読み込まれると、.xll は埋め込まれた .xlsm のコピーを読み込みます。ここまでは順調ですね。これにより、すべての意図と目的から見て、職場のエンド ユーザーに対して単に見慣れない Excel ファイルのように見えるものを送信することができます。
問題は、ユーザーが Excel シートに加えた変更を保存できるようにしたい場合に発生します。デスクトップに保存すると (保存機能に組み込まれた Excel を使用)、保存されるのは .xlsm だけです。その .xlsm を再度開くと、.xll は読み込まれなくなり、.xlsm に含まれる .NET 機能は機能しなくなります。
この時点で、おそらくいくつかの疑問が生じます。まず、.xll をシステムに登録しないのはなぜですか? 主な理由は、.xll を登録した場合、誰かが Excel を開くたびに .xll が開くためです。これは、埋め込まれた .xlsm も開くことを意味します (.xll が起動時に行うことを覚えておいてください)。 ... :-)。
次に、両方のファイルを送信してみませんか? 回答: エンド ユーザーにとって混乱が多すぎます (これについてはご容赦ください)。好きか嫌いかは別として、彼らは 1 つのファイルを開いてから変更することを望んでいます。彼らにとって、.xll は .xlsm の別のバージョンにすぎません。私は、自分自身を説明するのがはるかに簡単になるので、その認識を維持することを望んでいます。
最後に、グループ全体に .xll を配布し、それに対して .xlsms をリリースしないのはなぜですか? 回答: これらの .xlls は、ユーザーが自分のマシンに何を持っているかを制御できないランダムな場所に送信されるため、自己完結型にすることを好みます。
頭に浮かぶ2つの基本的な解決策があります。
オプション 1は、.xlsm から (おそらく .xll のインスタンスを介して) その場で .xll を単純に再コンパイルする方法を見つけ出し、その .xll をユーザーが選択した場所に保存することです。これには、独自の保存方法を作成する必要があります。これは、Excel では役に立たないためです。おそらく、保存時にユーザーが行った作業を傍受して、独自の保存方法にリダイレクトできるようにする必要があります。問題は、.xll 自体を再コンパイルする方法がわからないことです。特に、必ずしも SDK が搭載されていないマシンに .xll を送信するためです。それに加えて、ユーザーに独自の保存方法を強制することは、別の望ましくない混乱になります (少なくとも私の意見では...)。
オプション 2は、実行可能ファイルとして機能するアセンブリを作成することです。基本的に、.xlsm と .xll が含まれ、実行可能ファイルは Excel をロードしてから .xll を適用します。実行可能ファイルが管理者権限を必要としない限り、通常の古いファイルの代わりにそれらを送信しても問題ないと思います (ここにいるほとんどの人はとにかく拡張子を見ることさえありません。正しいアイコンが付いているため、ほとんどの人はできません。違いを教えてください)。唯一の問題は、リソース ファイルを使用せずに .xlsm をアセンブリにリンクし、.xlsm をバイトコードに変換する方法がわからないことです。これは基本的に私たちを振り出しに戻します。
本質的に、オプション 1 では、外部マシンでコンパイルする方法を理解する必要があり、オプション 2 では、.xlsm 全体を変更して元の場所に戻す方法を理解する必要があります... または少なくとも実行可能ファイルが簡単に見つけられる場所に配置します。
とにかく、ここまで来てくれたなら、永遠の感謝を捧げます。次にどこを見るべきかを見つけようとして立ち往生しているだけで、誰かが私を正しい方向に向けることができることを望んでいます。
前もって感謝します。
c# - Excel Dnaを使用してセルの値をどのように設定しますか?
ExcelDNAプラグインに次のコードがあります
AutoOpenメソッドに、次のコードを記述します。
Excelシートから呼び出される次の関数があります。
問題は、実際にセルの値を設定できないことです。メソッドを呼び出すと、最後の行でエラーが発生します。
私のエラーハンドラは私に次のエラーを与えます:
また、セルの値を次のように設定しようとしました。
同じ結果になります。
誰かが私がここで間違っているかもしれないことを指摘できますか?
excel-dna - Excelリボンのラベルを変更できません
Excel-DNAを使用して、リボンを使用してフライにカスタムラベルを設定しようとすると問題が発生します。
アノテーション「getLabel='GetLabel'」を含めなかった場合、プラグインは正常にロードされます。つまり、リボンタブは2つのボタンで表示され、ボタンのコールバックは正常に機能します。
プロパティ「getLabel='GetLabel'」を含めると、プラグインも読み込まれません。つまり、onLoadが呼び出されず、リボンタブがExcelで表示されません。
誰かが私がここで間違っていることを見ることができますか?デバッガーで実行してもエラーは表示されません。
これが私のDNAファイルです。わかりやすいように、サンプルの1つに基づいて作成しようとしました。
これが私のリボン派生C#ファイルです。
c# - Excel プラグインを使用してシングルトン オブジェクトの複数のインスタンスを防止する
私は、Excel にプラグインする 2 つのテクノロジを持っています。
1 つは、IDTExtensibility2 インターフェイスを実装する COM アドインです。もう 1 つは、Excel-DNA を介して実装される RTD サーバーです。
これらのオブジェクトは両方とも、Excel によってインスタンス化されます。それぞれが実行時に 3 番目のオブジェクトにアクセスして、データを取得して Excel にプッシュする必要があります。
このオブジェクトを Excel プラグインに渡すことができないため、それぞれが同じインスタンスを共有できることを期待してシングルトンにしました。
残念ながら、コードを実行すると、それぞれが他方が作成したシングルトン オブジェクトのインスタンスを認識しません。
両方のアドインが同じオブジェクトを参照するようにするにはどうすればよいですか?
両方のアドインを残す必要があり、プロセス間通信の設定には行きたくないと仮定して作業を進めましょう。
TL/DR 2 つの Excel プラグインは 3 番目のオブジェクトを共有する必要がありますが、各 Excel プラグインは他のプラグインが作成した 3 番目のオブジェクトのインスタンスを認識しないため、3 番目のオブジェクトをシングルトンにすることはできません。
そのような問題の解決策は何ですか?
excel - プログラムで Excel UDF を削除する方法
古い Excel アドイン (VBA で作成) を使用していますが、現在は .NET、ExcelDNA、NetOffice を使用して古いアドインを書き直しています。古いアドインにはUDF、たとえばOldUDFがあり、新しいアドインにはNewUDFがあり、2つのUDFは同じことを行い、同じパラメーターを受け入れます。しかし、それらは異なる関数名を持っています。従来の理由により、一部のクライアントには古いアドインがあり、一部のクライアントには新しいアドインがあります。一部のクライアントは両方を持っています。両方の Excel アドインがインストールされている場合、新しいアドインで oldUDF を newUDF に転送するというチェックボックスを提供したいと考えています。チェックボックスをオンにすると、oldUDF が newUDF として転送されます。チェックボックスがオフの場合、oldUDF は転送されません。新しいアドインで oldUDF と newUDF を定義していますが、チェックボックスがオフのときに oldUDF の定義を削除する方法がわかりません。ありがとう
編集:
これが私が試したものですが、うまくいきません。
AutoOpen() では、forward が true の場合、ファイルから forward 値 (true または false) を読み取ります。
しかし、コンパイルエラーが発生します
もう一度編集: 登録に成功しました。OldUDF の宣言を別の dll に入れました。oldUDF.dll が別の oldUDF.xll、oldUDF.dna を作成するとします。
AutoOpen では、(ファイルからの) 転送値が true かどうかを確認し、Excel.Application.RegisterXLL("olderUDF.xll"); を実行します。これはうまくいきます。
ただし、転送値が false の場合、C# で XLL を登録解除または削除する方法が見つかりませんか?
編集: http://msdn.microsoft.com/en-us/library/office/bb687866.aspxを見つけましたが、C# での使用方法がわかりません
ありがとう