Erstellen von XLLs (maschinell übersetzt)

Letzte Änderung: Dienstag, 24. November 2009

Gilt für: Excel 2010 | Office 2010 | VBA | Visual Studio

Inhalt dieses Artikels
Aktivieren von DLLs zu Rückruf in Excel
Drehen von DLLs in XLLs: Add-In-Manager-Schnittstelle-Funktionen

Wichtig

Dieser Artikel wurde maschinell übersetzt. Bitte beachten Sie den Haftungsausschluss. Die englische Version des Artikels ist als Referenz hier verfügbar: here.

Wenn Ihre DLL eigenständig ist oder nur von anderen Bibliotheken abhängt, müssen Sie wissen, wie Microsoft Excel für den Zugriff auf eigene Funktionen und Befehle aktiviert wird. Weitere Informationen finden Sie unter Gewusst wie: Zugreifen auf DLLs in Excel (maschinell übersetzt).

Jedoch, wenn Ihre DLL muss Zugriff auf Excel-Funktionen (z. B., um den Inhalt einer Zelle, die eine Tabellenfunktion aufrufen oder Excel erhalten Sie Informationen zum Arbeitsbereich abgefragt erhalten), muss Ihr Code Rückruf in Excel können.

Die Excel-C-API bietet mehrere Funktionen, die DLLs aufrufen, in Excel wieder zu aktivieren. Zugriff auf diese DLL muss werden statisch verknüpft zur Kompilierungszeit mit der Excel-32-Bit-Bibliothek xlcall32.lib. Die statische Bibliothek ist zum Herunterladen von Microsoft als Teil der Microsoft Excel 2010 XLL-SDK, die 32-Bit- und 64-Bit-Versionen dieser Bibliothek enthält.

Aktivieren von DLLs zu Rückruf in Excel

Für eine DLL für den Zugriff auf die Funktionalität in Excel und get oder Set Arbeitsbereichsinformationen, es muss zuerst die Adressen von der Excel-Callback-Funktionen Excel4, Excel4v, Excel12 und Excel12v erhalten. Die letzten beiden Excel 2007 eingeführt wurden und in späteren Versionen verfügbar sind. Zum Zugreifen auf alle diese muss das DLL-Projekt Verweise auf die folgenden Dateien aus dem Excel 2010 XLL-SDK enthalten. Wenn Sie nur die ersten beiden Rückrufe (in jeder Version von Excel) zugreifen möchten, muss das Projekt nur die ersten beiden Dateien enthalten.

Xlcall.h

Die Xlcall.h-Datei enthält die folgenden Elemente:

  • Funktionsprototypen für alle Callback-Funktionen.

  • Definitionen der Datenstrukturen, die die Rückrufe zum Datenaustausch zwischen der DLL/XLL und Excel verwenden und Konstantendefinitionen Datentyp.

  • Definitionen der C-API-Funktion und Befehl Entsprechungen des Arbeitsblatts, Blatt Makrofunktionen und unterstützten Excel-Befehle.

  • Definitionen der Callback-Funktion zurückgeben Werte.

#include-Richtlinie verwenden für diese Datei direkt oder indirekt Sie über einen anderen Header-Datei, in allen Dateien, die auf der C-API oder zu behandeln, die Datentypen, die die C-API verwendet.

Xlcall32.lib

Die Bibliothek Xlcall32.lib exportiert die ersten zwei Rückrufe, Excel4 und Excel4v und auch die XlCallVer-Funktion. Ohne einen Verweis auf diese Bibliothek in Ihr Projekt kann nicht vom Linker die XLL erstellt, wenn Sie alle diese Rückrufe in Ihrem Code verwendet haben. (Sie erhalten die Adressen dieser Funktionen durch dynamisches Verknüpfen, um die entsprechende Xlcall32.dll, die auf Ihrem System als Teil einer normalen Excel-Installation kopiert wird.)

Xlcall.cpp

Die Excel-Rückrufe Excel12 und Excel12v sind in Xlcall32.lib nicht exportiert. Dadurch wird sichergestellt, dass auch funktioniert mit früheren Versionen von Excel XLL-Projekte, die Sie erstellen Excel 2007 ab. Das Xlcall.cpp-Modul enthält Code für die Funktionen Excel12 und Excel12v, die in ein Excel-Einstiegspunkt Excel 2007 ab, oder einen Failsafe-Fehler-Wert zurückgeben, wenn Sie eine frühere Version von Excel ausgeführt werden. Möchten Sie erstellen eine XLL ab Excel 2007 ausgeführt wird und das ist die neue Datentypen verwenden, die größeren Rastern und mehr Unicode-Zeichenfolgen verarbeiten, sollten Sie dieses Modul in Ihr Projekt aufnehmen.

Hinweis

Beginnend mit der Excel-2010-SDK, kann diese Datei für 32-Bit- und 64-Bit-XLLs kompiliert werden.

Drehen von DLLs in XLLs: Add-In-Manager-Schnittstelle-Funktionen

Eine XLL ist eine DLL, die verschiedene Prozeduren exportiert, die von Excel oder Excel-Add-in-Manager aufgerufen werden. Diese Verfahren sind hier kurz beschrieben und in Add-in-Manager und XLL-Schnittstellenfunktionen (maschinell übersetzt) ausführlich erläutert. Alle diese DLL-Rückrufe beginnen mit dem Präfix xlAuto. Nur eine dieser, die xlAutoOpen Befehl ist erforderlich. Es wird aufgerufen, wenn das Add-in aktiviert ist, und es wird i. d. r. zum Registrieren von XLL-Funktionen verwendet, und Befehle mit Excel und weitere Initialisierungsaufgaben zu tun. Die Funktionssignaturen und Beispielimplementierungen von allen xlAuto-Funktionen werden in späteren Abschnitten bereitgestellt.

Obwohl xlAutoOpen die einzige diese Rückrufe erforderlich ist, kann das Add-in auch müssen andere abhängig sein Verhalten exportieren.

Excel 2007 eingeführt, einen neuen Datentyp, XLOPER12, zum Aufnehmen von größer Rastern und lange Unicode-Zeichenfolgen zu unterstützen. XLOPER12 wird später in diesem Thema beschrieben. Während xlAuto Funktionen übernehmen oder der alten Daten Typ XLOPER zurückgeben, wurden neue Versionen dieser Funktionen eingeführt, in Excel 2007, die XLOPER12-Datentypen verwenden. Mit Ausnahme von xlAutoFree12, die Sie manchmal implementieren müssen, um XLOPER12 Speicher zu vermeiden von Speicherverlusten, können Sie problemlos weglassen alle Version 12 xlAuto Funktionen, in diesem Fall ruft Excel 2007 ab, Excel-Versionen die XLOPER.

xlAutoOpen

Excel Ruft die xlAutoOpen-Funktion, wenn die XLL aktiviert wird. Das Add-In wird aktiviert am Anfang einer Excel-Sitzung Wenn es in der letzten Excel-Sitzung aktiv war, die normalerweise beendet. Das Add-In wird aktiviert, wenn es während einer Excel-Sitzung geladen wird. Das Add-In kann deaktiviert und reaktiviert während einer Excel-Sitzung, und die Funktion wird auf eine erneute Aktivierung aufgerufen.

Sie sollten xlAutoOpen zum Registrieren von XLL-Funktionen und Befehle, Initialisieren von Datenstrukturen, Anpassen der Benutzeroberfläche und so weiter verwenden.

Wenn Ihr Add-in implementiert und der xlAutoRegister-Funktion oder die xlAutoRegister12-Funktion exportiert, könnte Excel versucht, zu aktivieren und registrieren eine Funktion oder einen Befehl ohne Aufruf von xlAutoOpen-Funktion. In diesem Fall sollten Sie sicherstellen, dass Ihr Add-in ausreichend für die Funktion oder den Befehl ordnungsgemäß initialisiert wird. Wenn dies nicht der Fall ist, sollten Sie entweder beim Registrieren der Funktion oder den Befehl oder die erforderliche Initialisierung durchführen fehlschlagen.

xlAutoClose

Excel Ruft die xlAutoClose-Funktion, wenn die XLL deaktiviert wird. Das Add-In wird deaktiviert werden, wenn normalerweise eine Excel-Sitzung beendet. Wenn der Benutzer das Add-in in einer Excel-Sitzung deaktiviert, wird die Funktion aufgerufen.

Sie sollten xlAutoClose unregister-Funktionen und Befehle, Ressourcen freizugeben, Anpassungen rückgängig gemacht und so weiter verwenden.

Hinweis

Es ist ein bekanntes Problem mit der Aufhebung der Registrierung von Funktionen und Befehle. Weitere Informationen finden Sie unter Bekannte Probleme bei der Entwicklung von XLLs in Excel (maschinell übersetzt).

xlAutoAdd

Excel fordert die xlAutoAdd function, sobald der Benutzer die XLL während einer Excel-Sitzung mit dem Add-In-Manager aktiviert. Diese Funktion wird nicht aufgerufen, wenn Excel gestartet und eine vorinstallierte Add-In lädt.

Sie können diese Funktion verwenden, um ein benutzerdefiniertes Dialogfeld anzuzeigen, das dem Benutzer sagt, dass das Add-in aktiviert wurde, lesen oder Schreiben in die Registrierung oder Lizenzinformationen zu überprüfen.

xlAutoRemove

Excel Ruft die xlAutoRemove-Funktion, wenn der Benutzer die XLL während einer Excel-Sitzung mit dem Add-In-Manager deaktiviert. Diese Funktion wird nicht aufgerufen, wenn eine Excel-Sitzung, ordnungsgemäß oder nicht ordnungsgemäß, mit der Add-in installiert schließt.

Sie können diese Funktion verwenden, ein benutzerdefiniertes Dialogfeld anzuzeigen, das dem Benutzer sagt, dass das Add-in deaktiviert wurde, zu lesen oder Schreiben in die Registrierung.

XlAddInManagerInfo/xlAddInManagerInfo12

Excel Ruft die xlAddInManagerInfo-Funktion, wenn der Add-In-Manager zum ersten Mal in einer Excel-Sitzung aufgerufen wird. Wenn Excel ein Argument gleich 1 übergibt, sollten diese Funktion eine Zeichenfolge (in der Regel den Namen der Add-in-;) zurück. Andernfalls sollte #VALUE! zurückgegeben.

Ab Excel 2007, fordert Excel die Funktion xlAddInManagerInfo12 gegenüber der xlAddInManagerInfo-Funktion Wenn es von der XLL exportiert wird. Die xlAddInManagerInfo12-Funktion sollte in die gleiche Weise wie die xlAddInManagerInfo-Funktion versionsspezifische Unterschiede im Verhalten von der XLL zu vermeiden funktionieren. Die xlAddInManagerInfo12-Funktion sollte einen XLOPER12-Datentyp zurückgeben, während die xlAddInManagerInfo-Funktion einen XLOPER-Datentyp zurückgeben soll.

XlAutoRegister/xlAutoRegister12

Excel fordert xlAutoRegister-Funktion, wenn ein Aufruf an die XLM-Funktion REGISTER vorgenommen wurde oder die C-API entspricht xlfRegister-Funktion mit Typen zurück und Argument fehlt für die Funktion registriert wird. Die xlAutoRegister-Funktion ermöglicht die XLL auf seiner internen Suchlisten von exportierten Funktionen und Befehle, um die Funktion mit dem Argument registrieren und die angegebenen Typen zurückgeben.

Ab Excel 2007, fordert Excel die Funktion xlAddInRegister12 gegenüber der xlAddInRegister-Funktion Wenn es von der XLL exportiert wird.

Hinweis

xlAddInRegister/xlAddInRegister12 versucht, ohne das Argument die Funktion registrieren und Rückgabetypen, tritt eine Rekursionsschleife aus aufrufen, die schließlich die Aufrufliste überläuft und wird von Excel schließen oder reagiert nicht.

XlAutoFree/xlAutoFree12

Excel Ruft die xlAutoFree/xlAutoFree12-Funktion unmittelbar, nachdem eine XLL-Arbeitsblattfunktion einen XLOPER/XLOPER12-Datentyp mit einem Flag, der Excel anweist zurückgibt, Speicher, die die XLL noch freigegeben werden muss. Dies ermöglicht die XLL zurückgegeben dynamisch zugewiesen, Arrays, Zeichenfolgen und externe Verweise auf das Arbeitsblatt ohne Speicherlecks. Ab Excel 2007, ist der XLOPER12-Datentyp unterstützt. Weitere Informationen finden Sie unter Speicherverwaltung in Excel (maschinell übersetzt).

Hinweis

Ab Excel 2007, wenn Excel Arbeitsblatt Multithread-Neuberechnung Verwendung konfiguriert ist, wird die xlAutoFree/xlAutoFree12-Funktion auf dem gleichen Thread aufgerufen, die gerade verwendet wurde, um die Funktion aufzurufen, die es zurückgegeben. Der Aufruf von xlAutoFree/xlAutoFree12 erfolgt immer, bevor alle nachfolgenden Arbeitsblatt-Zellen in diesem Thread ausgewertet werden. Dies vereinfacht die Thread-Safe-Design in Ihrem XLL. Weitere Informationen finden Sie unter Multithreadneuberechnung in Excel (maschinell übersetzt).

Erstellen von 64-Bit-XLLs

Excel und benutzerdefinierte Funktionen können auf 64-Bit-Betriebssystemen zu Performance-Vorteile über 32-Bit-Betriebssysteme nutzen führen. Excel übergibt die Werte in XLOPER12-Strukturen, die Informationen zu den Typen für die Daten enthalten. Seien Sie vorsichtig beim Konvertieren zwischen Werten in der XLOPER12-Struktur und systemeigene Typen wie int oder Zeiger auf die Werte in größeren Typ beizubehalten.

Hinweis

Haftungsausschluss für maschinelle Übersetzungen: Dieser Artikel wurde mithilfe eines Computersystems und ohne jegliche Bearbeitung durch Personen übersetzt. Microsoft bietet solche maschinellen Übersetzungen als Hilfestellung für Benutzer ohne Englischkenntnisse an, damit Sie von den Informationen zu Produkten, Diensten und Technologien von Microsoft profitieren können. Da es sich bei diesem Artikel um eine maschinelle Übersetzung handelt, enthält er möglicherweise Fehler in Bezug auf (Fach-)Terminologie, Syntax und/oder Grammatik.

Siehe auch

Konzepte

Gewusst wie: Aufrufen von XLL-Funktionen aus dem Funktions-Assistenten oder Ersetzen von Dialogfeldern (maschinell übersetzt)

Add-in-Manager und XLL-Schnittstellenfunktionen (maschinell übersetzt)

Entwickeln von Excel 2010-XLLs (maschinell übersetzt)