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 LongSub main()
...
l = QPFrequency
EndMein 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 BooleanSub main()
Dim l As Long, b As Boolean
l = 1000
...
b = QPSleep( l )
EndJa, 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