0

TurboDelphi2006を使用しています。

DLLは、VBA/DLLの組み合わせの一部としてExcel内から呼び出されます。

問題の最初の部分は、現在のExcelセッションへの参照をDLLに渡す方法を見つけようとすることです。私が見た他のほとんどのコードは、現在のコードとは別のExcelのインスタンスを起動したことです。

IDispatchオブジェクトのインスタンスを作成してから何かをIDispatchオブジェクトのメソッドに渡すC++コードを見たことがありますが、C++についてはIDispatchあまり詳しくありません。

何か案は?

4

3 に答える 3

7

あなたが説明することは、COMアドインの作成と呼ばれます。自動化 DLL を作成し、IDTExtensibility2インターフェイスを実装する必要があります。次に、メソッドApplicationへのパラメーターとしてExcel インターフェイスを受け取ります。OnConnection

また、Excel が自動的に読み込むように、DLL をアドインとして登録する必要があります。

編集:言及するのを忘れました: Add-in Express をご覧になることをお勧めします。それらのフレームワークとコンポーネントにより、Office アドインの作成をばかばかしいほど簡単に始めることができます。の詳細を気にする必要はありませんIDTExtensibility2。ただし、(十分に正当化された)値札が付属しています。

于 2008-12-05T22:56:31.893 に答える
3

Delphiには、Excelやその他のOfficeアプリケーションへの完全なアクセスを提供する一連のActiveXコントロールが付属しています。ツールパレットの[サーバー]タブにあるはずです。

そこにない場合は、[コンポーネント]、[パッケージのインストール]の順に選択し、リストを最後まで下にスクロールして、適切なパッケージを選択します。

デフォルトのインストールでは、次のように呼び出す必要があります。

MicrosoftOfficeサンプル自動化サーバーラッパーコンポーネント

XPとWin2k用に1つあるはずです。XPのものはVistaで動作します。

これで、Excelを自動化する場合。

Delphiを使用してExcelに機能を追加したいだけの場合は、ExcelがCOMオブジェクトを非常に受け入れていると思われるため、COMオブジェクトを使用することをお勧めします。それ以外の場合は、ストレートDLLを作成し、Excelが他のDLLを使用するのと同じ方法で使用できます。

于 2008-12-05T21:11:40.827 に答える
0

Office についてはよくわかりませんが、COM/ActiveX を使用する必要があると思います。次に、IDispatch も取得します。http://delphi.about.com/od/comoleactivex/OLE_COM_DCOM_Automation_ActiveX_Delphi_knowledge_base.htmを参照してください。

于 2008-12-05T15:02:39.243 に答える