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 Integer
    

    einbinden.

    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 Type
    

    Dementsprechend 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.


  • Mod

    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.


Anmelden zum Antworten