Programmieren mit der C-API in Excel
Gilt für: Excel 2013 | Office 2013 | Visual Studio
Sie können das Microsoft Excel 2013 XLL Software Development Kit und die C-API verwenden, um hochleistungsfähige Tabellenfunktionen für Excel 2013 zu erstellen. Die Upgrades auf die Excel 2013-C-API spiegeln den fortlaufenden Support für Benutzende wider, für die die Leistung von Drittanbieterfunktionen oder internen Funktionen entscheidend ist.
Excel-Programmierschnittstellen
Excel bietet mehrere Optionen für die Entwicklung von Anwendungen, die Schnittstellen mit Excel bilden. Die Excel-Programmierschnittstellen wurden in früheren Versionen in der folgenden Reihenfolge hinzugefügt:
XLM-Makrosprache: Die erste Sprache für die Erweiterung von Excel, auf die Benutzende zugreifen können, und die Grundlage für die C-API. XLM wird zwar in Excel 2010 noch unterstützt, wurde aber schon lange durch Visual Basic for Applications (VBA) ersetzt.
C-API und XLLs: DLLs, die in Excel integriert sind. Diese DLLs bieten die direkteste und schnellste Schnittstelle zum Hinzufügen von leistungsstarken Tabellenfunktionen, wenn auch zulasten der Komplexität im Vergleich zu späteren Technologien.
VBA: Visual Basic-Codeobjekte, die Excel-Arbeitsmappenobjekten zugeordnet sind. VBA ermöglicht das Auffangen von Ereignissen, die Anpassung sowie das Hinzufügen von angepassten Funktionen und Befehlen. VBA ist die am weitesten verbreitete und am einfachsten verfügbare Erweiterungsoption.
COM: Der Interoperabilitätsstandard für Windows-basierte Anwendungen, über die Excel seine Ereignisse und Objekte verfügbar macht. VBA verwendet COM zur Interaktion mit Excel. Excel exportiert COM-Typbibliotheken, die Sie bei der Erstellung von C++-COM-Coderessourcen und -Anwendungen unterstützen, die Excel extern steuern können.
Microsoft .NET Framework: Die mehrsprachige verwaltete Codeumgebung, die für die schnelle Anwendungsentwicklung für verteilte Umgebungen konzipiert ist. Die primäre Programmiersprache für auf .NET Framework basierenden Code ist C#. Allerdings lassen sich in der Microsoft Intermediate Language (MSIL) viele Sprachen kompilieren. Excel 2013 kann auf Coderessourcen zugreifen, die in .NET Framework-Assemblys enthalten sind.
Anwendungsbereiche der C-API
Der Hauptgrund zum Erstellen von XLLs und zur Verwendung der C-API ist die Erstellung von leistungsstarken Tabellenfunktionen. XLL-Funktionen werden zwar häufig als von Benutzenden definierte Funktionen bezeichnet. Allerdings kommt diese Technologie für die meisten Benutzenden nicht in Frage, und zwar aufgrund des Zeitaufwands, der erforderlich ist, um sich das Verständnis und die entsprechenden Fähigkeiten anzueignen. Nichtsdestotrotz bilden die Anwendungen mit leistungsstarken Funktionen sowie in Excel 2013 die Möglichkeit, Multithread-Schnittstellen für leistungsstarke Serverressourcen zu schreiben, einen wichtigen Bestandteil der Excel-Erweiterbarkeit.
Die Version der C-API, die in Excel 2007 eingeführt wurde, befasst sich in erster Linie mit den Aspekten im Zusammenhang mit leistungsstarken Berechnungen und nicht mit Features wie z. B. die Benutzeroberfläche.
Schreiben von leistungsstarken benutzerdefinierten Tabellenfunktionen
Die Excel C-API ist die ideale Wahl, wenn Sie hochleistungsfähige Arbeitsblattfunktionen erstellen möchten, indem Sie XLL-Add-Ins erstellen. Die C-API bietet Ihnen den direktesten Zugriff auf Arbeitsblattdaten. Durch XLLs erhält Excel den direktesten Zugriff auf die DLL-Ressourcen. Die Leistung von XLLs wird in Excel 2013 durch das Hinzufügen neuer Datentypen und vor allem durch die Unterstützung für die Ausführung benutzerdefinierter Funktionen auf Clusterservern weiter verbessert.
Das Arbeiten mit XLLs hat seinen Preis: Die C-API verfügt nicht über die leistungsstarken Features zur schnellen Entwicklung von VBA, COM oder .NET Framework. Die Speicherverwaltung ist lediglich rudimentär, weswegen mehr Verantwortung bei den Entwickelnden liegt. Viele Excel-Features, die über COM durch VBA und .NET Framework verfügbar sind, sind in der C-API nicht verfügbar.
Zugreifen auf Multithread-Server mithilfe von XLL-Tabellenfunktionen
Mit der in Excel 2007 eingeführten Multithread-Neuberechnung (MTR) können Sie threadsichere XLL-Tabellenfunktionen erstellen. Sie können diese Funktionen zum Zugreifen auf Multithread-Server verwenden. In späteren Abschnitten wird ausführlich beschrieben, wie sich dadurch die für Benutzende ersichtliche Leistung erheblich steigern lässt. Für Excel-Benutzer, die manchmal Zugriff auf eine große Menge Verarbeitungsleistung zugreifen müssen, bietet die Kombination einer XLL, die MTR und einen leistungsstarken Server für Berechnungen verwendet, die Lösung mit der höchsten Leistung.
Anpassen der Excel-Benutzeroberfläche
Für viele Excel-Versionen war die C-API nicht die beste Wahl zum Anpassen der UI. VBA bietet außergewöhnlich guten Zugriff auf Excel-Objekte und -Ereignisse. Die in Excel 2007 eingeführte UI unterscheidet sich sowohl im Hinblick auf das Aussehen und auch die zugrunde liegende Technologie erheblich von früheren Versionen. Sie können diese Schnittstelle am besten mithilfe von verwaltetem Coderessourcen anpassen.
Erstellen von Anwendungen, auf die im Internet zugegriffen werden kann
Excel Services, eingeführt mit dem 2007 Microsoft Office-System, bietet die beste Möglichkeit, um Benutzenden mithilfe von standardmäßigen Webbrowsertools Zugriff auf Arbeitsmappen und Excel-Funktionen zu gewähren. Zusammen mit .NET Framework-Entwicklungssprachen und -ressourcen, stellen diese Technologien in Zukunft einen wichtigen Bestandteil der Excel-Bereitstellung für Benutzer dar.
Steuern von Excel aus externen Anwendungen
Excel macht seine Objekte, Methoden und Ereignisse über die COM-Schnittstelle verfügbar. Sie können daher COM verwenden, um eigenständige Anwendungen zu erstellen, die eine Excel-Sitzung starten und steuern oder eine vorhandene Excel-Sitzung steuern können. Sie können auf die über COM verfügbar gemachte Excel-Schnittstelle in mehreren Entwicklungssprachen zugreifen, einschließlich C++ und VBA. C# und die .NET Framework bieten auf ähnliche Weise eine Oberfläche für Excel, die den Remotezugriff auf und die Steuerung von Excel ermöglicht.
Asynchrones Aufrufen von Excel
In Excel können XLLs die C-API nur aufrufen, wenn Excel die Steuerung an die XLL übergeben hat. Eine Tabellenfunktion, die von Excel aufgerufen wird, kann Excel mithilfe der C-API zurückrufen. Ein XLL-Befehl, der von Excel aufgerufen wird, kann die C-API aufrufen. DLL- und XLL-Funktionen und -Befehle, die von VBA aufgerufen werden, wenn VBA selbst von Excel aufgerufen wurde, können die C-API aufrufen. Sie können beispielsweise keinen zeitlich festgelegten Windows-Rückruf in XLL festlegen und die C-API von dort aufrufen, und Sie können die C-API nicht von einem von XLL erstellten Hintergrundthread aus aufrufen. Das asynchrone Aufrufen von Excel mithilfe von Com von einer DLL- oder XLL-Funktion aus wird nicht empfohlen.
Das ist sehr einschränkend, denn es gibt möglicherweise Anwendungen, in denen Sie möchten, dass Excel asynchron auf ein Ereignis reagiert. Vielleicht möchten Sie beispielsweise, dass Excel ein Datenstück im Internet abruft und erneut berechnet, wenn sich die Daten ändern. Oder Sie möchten, dass ein Hintergrundthread eine Berechnung ausführt und Excel diese nach Abschluss neu berechnet.
Das erreichen Sie, indem Sie Excel aktiv Änderungen abfragen lassen. Allerdings ist das ineffizient und einschränkend, da Excel dabei häufig seine normale Aktivität unterbrechen muss. Sie können zwar mithilfe der C-API oder von VBA einen wiederholten zeitgesteuerten Befehl einrichten, das ist aber keine ideale Lösung.
Im Idealfall benötigen Sie einen effizienteren externen Prozess, der nach der Änderung von Daten sucht, und dieser externe Prozess soll auslösen, dass Excel das Update abruft und eine Neuberechnung durchführt. Hierfür können Sie eine Anwendung verwenden, die über COM eine Schnittstelle mit Excel bildet. Anders als die C-API ist COM nicht darauf beschränkt, Aufrufe nur dann zu tätigen, wenn Excel seine Steuerung ausdrücklich übergeben hat. COM-Anwendungen können Excel-Methoden aufrufen, wenn Excel den Status "Bereit" aufweist, diese Methodenaufrufe werden jedoch möglicherweise ignoriert, wenn Dialogfelder angezeigt werden, Menüs abgerufen werden oder wenn ein Makro ausgeführt wird.
Die C-API und ihre Beziehung zu XLM
Die Excel-Makrosprache (XLM) war die erste Programmierumgebung in Excel, auf die der Benutzer zugreifen konnte. Mit dieser Sprache konnten Benutzende individuell angepasste Befehle und Funktionen in speziellen Makrovorlagen erstellen, die wie normale Arbeitsblätter aussehen. XLM-Makrovorlagen werden in Excel 2013 weiterhin unterstützt. Zusätzlich zu den folgenden Elementen, die nicht in einem Arbeitsblatt eingegeben werden können, können Sie in einer Makrovorlage alle gängigen Tabellenblattfunktion wie SUMME und LOG verwenden:
Funktionen für Arbeitsbereichsinformationen wie GET.CELL und GET.WORKBOOK.
Funktionen, die Befehlen entsprechen, die eine Automatisierung gewöhnlicher Benutzervorgänge ermöglichen, z. B. DEFINE.NAME und PASTE.
Funktionen, die im Zusammenhang mit Add-Ins stehen, z. B. REGISTER.
Ereignistraps, die Befehlen entsprechen, z. B. ON.ENRTY und ON.TIME.
Makrofunktionsspezifische Operationen wie ARGUMENT und VOLATILE.
Flusssteuerungsoperationen wie GOTO und RETURN.
In Excel, Version 3, gab es eine eingeschränkte Version der C-API. In Excel, Version 4, wurde die XLM-Sprache jedoch der C-API zugeordnet. Seitdem können DLLs alle Tabellenblattfunktionen, Funktionen für Makrovorlageninformationen und Befehle aufrufen und Ereignistraps festlegen. DLLs können aus der C-API heraus keine XLM-Flusssteuerungsfunktionen aufrufen. Diese Makrovorlagenfunktionen und Befehle sind in der Hilfedatei "XLMacr8.hlp" (bisher bezeichnet als "Macrofun.hlp") dokumentiert. Um diese Hilfedatei abzurufen, rufen Sie das Microsoft Download Center auf, und suchen Sie nach "XLMacr8.hlp".
Hinweis
In Windows Vista und Windows 7 werden HLP-Dateien nicht direkt unterstützt, Sie können aber das Windows-Hilfeprogramm (WinHlp32.exe) für Windows Vista oder das Windows-Hilfeprogramm (WinHlp32.exe) für Windows 7 von Microsoft herunterladen und die Dateien damit öffnen.
DLLs rufen C-API-Entsprechungen dieser Funktionen und Befehle mithilfe der Rückruffunktionen Excel4, Excel4v, Excel12 und Excel12v auf (die beiden letzten wurden in Excel 2007 eingeführt). Aufgezählte Konstanten, die den einzelnen Funktionen und Befehlen entsprechen, sind in einer Headerdatei definiert und werden als eines der Argumente an diese Rückrufe übergeben. GET.CELL wird beispielsweise durch xlfGetCell, REGISTER durch xlfRegister und DEFINE.NAME durch xlcDefineName dargestellt.
Abgesehen davon, dass die Tabellenblattfunktionen und Makrovorlagenfunktionen und Befehle bereitgestellt werden, stellt die C-API Funktions- und Befehlsaufzählungen bereit, die innerhalb einer DLL nur mithilfe dieser Rückrufe aufgerufen werden können. Mit xlGetName kann eine DLL beispielsweise ihren eigenen vollständigen Pfad und Dateinamen ermitteln, der für die Registrierung von Funktionen und Befehlen bei Excel erforderlich ist.
Seit der Einführung von Visual Basic for Applications(VBA)-Blättern in Excel Version 5 und der Visual Basic-Editor (VBE) in Version 8 (Excel 97) ist die einfachste Möglichkeit für Benutzer, Excel anzupassen, die Verwendung von VBA anstelle von XLM. Folglich ist ein Großteil der neuen Funktionen, die in späteren Versionen von Excel eingeführt wurden, über VBA verfügbar, jedoch nicht über XLM oder die C-API. Beispielsweise sind mehrere Befehle, Ereignisfallen und erweiterte Dialogfeldfunktionen über VBA verfügbar, jedoch nicht über XLM oder die C-API.
Weitere Informationen finden Sie unter Was ist neu in der C-API für Excel 2013.
Siehe auch
Was ist neu in der C-API für Excel