1

私は現在、Excel ドキュメントから 2 つの異なるデータ セットを取得し、それを 2 つの異なる Web サービスに送信するユーティリティを作成しています。データの各セットには、データを Web サービスに送信するための独自のボタンがあります。ボタンをクリックすると、対応する Web サービスが入力値に応じてデータを返します。

私がやろうとしているのは、このユーティリティを配布して、さまざまな人々が使用できるようにすることです。彼らがやろうとしていることは、彼ら自身のExcelドキュメントの特定のセルを私のユーティリティの対応するセルに同期させることです。簡単なエクセルの数式を使用。例えば:

c:\temp\[book1.xls]sheet1'!a1

今私がやろうとしているのは、ユーザーがセルをユーティリティの対応するセルにリンクすると、ユーティリティのボタンまたは更新を自動的に「クリック」することです。

自分のページで選択変更イベントを試しました。しかし、ユーティリティがアクティブになるかクリックされるまで、実際には処理されません。

ユーティリティを自動的に更新する方法はありますか? 私のユーティリティが閉じられている間に何らかの形でこれを行うと、特に素晴らしいでしょう. したがって、ユーザーがそれを開くと、すでに情報が入力されており、出力は正しいです。

4

1 に答える 1

2

要件:
ユーザーが Excel を使用しているときにアプリがデータを収集できることを保証する必要があります。その時点でアプリが実行されていない可能性があります。アプリがアクティブなときだけでなく、Worksheet_SelectionChange() イベントを自動的に発生させる必要があります。

解決策:
基本的に、Worksheet_SelectionChange() が常に実行されていることを保証し、ユーザーが Excel のインスタンスを開くたびに、特定のターゲット範囲アドレスに入力されたデータ/数式を収集して処理できることを保証するためVB.NET Excel COM アドイン内で selectionchange イベントを接続する必要があります。これを行うにはいくつかの方法がありますが、VB.NET を使用しているため、VSTO COM アドインを構築する最新のアプローチを使用するのが最善です。
VSTO アドインを最適に構築する方法については、他にも多数の質問があります (C# の場合も VB.NET の場合もありますが、この情報はすべて同じで、構文が異なるだけです)。
したがって、2 つのプロジェクトが必要になります。既存のものに加えて、Excel VSTO アドイン (VB.NET でも実行できます)。

ここで、selectionchange イベント内で、コードがターゲット範囲を正しく処理することを確認する必要があります。すなわち。A1:B1;D2:E2 を選択して、連続していない範囲のグループを確認し、データをアプリにコピーしてください。xml などの形式を使用して、Excel から最新のデータをシリアル化することを検討してください。これにより、アプリがその時点で開かれていない場合でも、次回アプリを開いたときに保存されているデータを逆シリアル化して読み取ることができます。データをどのように処理するか (つまり、データグリッドにロードするためのものですか?) と、さらに処理を行って後で別の場所に保存するかどうかに本当に依存していると思います (その場合、からデータベースに直接入れることができます)。 Excel のアドイン)。

于 2010-11-03T00:09:22.430 に答える