質問

Turbo Delphi 2006を使用しています。

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

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

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

アイデアはありますか

役に立ちましたか?

解決

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

登録 DLLをアドインとして、Excelが自動的にロードするようにします。

編集:言及するのを忘れた:アドインエクスプレス。そのフレームワークとコンポーネントにより、Officeアドインの作成を非常に簡単に開始できます。 OnConnectionの詳細を気にする必要はありません。ただし、すべてには正当な価格タグが付いています。

他のヒント

Delphiには、Excelおよびその他のOfficeアプリケーションへの完全なアクセスを提供するActiveXコントロールのセットが付属しています。それらは<!> quot; Servers <!> quot;にあるはずです。ツールパレットのタブ。

存在しない場合は、[コンポーネント|パッケージのインストール]を選択し、リストを最後までスクロールダウンして、適切なパッケージを選択します。

デフォルトのインストールでは、これらを呼び出す必要があります:

Microsoft Officeサンプルオートメーションサーバーラッパーコンポーネント

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

Excelを自動化する場合は、

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

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

scroll top