Frage

Ich bin mit Turbo Delphi 2006.

Die DLL wird in Excel als Teil einer VBA / DLL Kombination aufgerufen werden.

Der erste Teil des Problems versucht, herauszufinden, wie man an die DLL auf die aktuelle Excel-Sitzung einen Verweis zu übergeben. Die meisten anderen Code, den ich habe, war zu sehen, dass es eine separate Instanz von Excel abgesehen von dem einen ins Leben gerufen Sie in.

Ich habe einige C ++ Code zu sehen, die eine Instanz von IDispatch erstellt und geht dann etwas in einem Verfahren des IDispatch Objekt, aber nicht viel C ++ zu wissen.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Was Sie beschreiben, heißt einen COM-AddIn zu schreiben. Sie benötigen eine Automatisierung DLL und implementieren die IDTExtensibility2 Schnittstelle. Sie werden die Excel Application Schnittstelle als Parameter an die OnConnection Methode dann erhalten.

Sie werden auch href="http://msdn.microsoft.com/en-us/library/aa155640(office.10).aspx#comaddins_registration" zum registrieren Ihre DLL als Addin so Excel wird es automatisch geladen werden.

EDIT: vergessen zu erwähnen: Sie vielleicht einen Blick auf Add-in Express . Deren Rahmen und Komponenten machen die ersten Schritte mit der Erstellung von Office-Add-Ins ridiculuously einfach. Sie werden auf jeden Fall müssen nicht mit den Details IDTExtensibility2 stören. All das kommt mit einem (gut begründeten) Preisschild, though.

Andere Tipps

Delphi kommt mit einem Satz von ActiveX-Steuerelemente vollständigen Zugriff auf Excel und die anderen Office-Anwendungen zu geben. Sie sollten auf der Registerkarte „Server“ der Tool-Palette sein.

Wenn die nicht da sind, dann Komponenten wählen |. Pakete installieren, und blättern Sie die Liste dort nach unten, bis zum Ende, und wählen Sie das richtige Paket

Bei einer Standardinstallation sollte sie aufgerufen werden:

Microsoft Office Beispiel Automation Server Wrapper-Komponenten

, und es sollte eine für XP und Win2k sein. Die XP diejenigen für Vista arbeiten.

Jetzt, wenn, wenn Sie Excel automatisieren.

Wenn Sie nur mithilfe von Delphi Funktionalität zu Excel hinzufügen möchten, würde ich vorschlagen, ein COM-Objekt verwenden, wie ich vermute, dass Excel ist sehr von COM-Objekten zu akzeptieren. Andernfalls können Sie eine gerade DLL erstellen, und verwenden, die die gleiche Art und Weise, dass Excel andere DLL verwendet.

Ich weiß nicht viel über Büro, aber ich denke, Sie sollten COM verwenden / ActiveX. Dann erhalten Sie auch Ihre IDispatch. Siehe http://delphi.about.com/od/comoleactivex/OLE_COM_DCOM_Automation_ActiveX_Delphi_knowledge_base.htm

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top