DLL's auch für VBA



  • Ich bin dabei eine Win32-DLL mit dem VC98 zu schreiben.
    Die Funktionen sollen aus dem VBA aufgerufen werden.

    Eine Routine ohne Parameter funktioniert einwandfrei:

    extern "C" __declspec(dllexport) ULONG QPFrequency(void)
    {
    ...
    return 1000;
    }

    In Excel/VBA:
    Private Declare Function QPFrequency Lib "my.dll" () As Long

    Sub main()
    ...
    l = QPFrequency
    End

    Mein Problem ist, wenn ich Parameter von VBA an eine DLL-Funktion
    übergeben möchte, schreibt Excel 'DLL-Einsprungspunkt nicht gefunden'.
    So sieht einer meiner zahlreichen Versuche aus:

    extern "C" __declspec(dllexport) bool __stdcall QPSleep(LONG microsec )
    {
    LONG l = microsec;
    ...
    return true; // Das bool wird tatsächlich richtig ins Boolean konvertiert
    }

    In Excel/VBA sieht mein Aufruf so aus:
    Private Declare Function QPSleep Lib "my.dll" (ByVal microsec As Long) As Boolean

    Sub main()
    Dim l As Long, b As Boolean
    l = 1000
    ...
    b = QPSleep( l )
    End

    Ja, und die Fehlermeldung kommt schon bei Declare. Ich vermute, dass der
    C++-Compiler die Parameter nicht richtig anlegen lässt.
    Wer kann mir da helfen? - Danke Vorab



  • bool kennt VBA doch gar nicht!
    VBA kennt nur VARIANT_BOOL, welches definiert ist als -1 = TRUE, 0 = FALSE!



  • Es gibt ein Dokument in welchem beschrieben ist wie die Funktionen aussehen müssen wenn sie von VBA aus aufgerufen werden sollen. Die Datei heißt 'vb5dll.doc'.
    http://www.visualbasicforum.com/t45910.html


Log in to reply