DelphiでExcel用のDLLを作成する
質問
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を参照してください