Structs aus DLL unter Excel einsetzen
-
Ich habe eine DLL unter C mit Hilfe der Windows API programmiert und möchte nun diese unter Excel einsetzen. Ich habe aber ein Problem beim Einbinden von Funktionen in VBA, welche ein Struct benutzen.
Die Funktionen, welche keine Structs besitzen kann ich ja mittles
Declare Function MeineFunction Lib "\MeineDLL.dll" () As Integereinbinden.
Aber wie mache ich das wenn in dem Quelltext der DLL folgendes steht ?
typedef struct { unsigned int Version; unsigned int CopyRightYear; } tVersion; __declspec(dllexport) tVersion GetMyVersion() { ... }
-
-
Hi,
von der DLL wird zu VBA nur ein Zeiger auf die Struktur übergeben. Du musst in VBA diese Struktur nachbauen:
zb:
Private Type MyType Version As Long CopyRightYear AS Long End TypeDementsprechend deklarieren:
Declare Sub GetMyVersion Lib "Deine.dll" ( _ Byref dieStruktur As MyType)das wars.
-
Danke für euere Antworten. Das von audacia ist genau das was ich auch gesucht habe.
@CStern
Deine Antwort ist auch gut, hat aber einen Nachteil das ich sobald eine Änderung an dem Struct erfolgt, ich das entpsrechende Excel-Sheet auch ändern muss.
-
Wenn Du grundsätzlich COM einsetzt, warum verwendest Du nicht pure COM Typen, wie Variants und SafeArrays. Damit kann man auch mehrere Datenfelder in einer variable übergeben.