hier mal 'ne Frage an die VBA-Profis.
Ich habe mit einer anderen Programmiersprache zeitoptimierte Funktionen geschrieben und in eine DLL gepackt. Der Aufruf und die Verwertung der Ergebnisse soll von Excel erfolgen.
"Early Binding" wie nachfolgend angegeben funktioniert super:
Declare Function Hauptprogramm Lib "C:\PIV_ADD\PIV_Create.DLL" (Options As String) As Long
Sub blabla()
Ergebnis = Hauptprogramm("meine Übergaben")
End Sub
Nun ist die DLL aber ggf. beim User nicht vorhanden oder in anderen Ordnern zu finden, so dass ich lieber auf "Late Binding" gehen möchte, wobei ich vorher testen kann, ob und wo die DLL vorhanden ist und die Funktion exportiert ist.
Hierzu folgender Code:
Sub blabla()
Lokal = "C:\PIV_ADD\"
Net="\\c4dehihhh01g002.irb.t-com.net\40044-PIV_ADD$\"
hLib = LoadLibrary(Lokal & "PIV_Create.dll")
If hLib = 0 Then
hLib = LoadLibrary(Net & "PIV_Create.dll")
If hLib = 0 Then Msg = "Keine passende DLL gefunden" : EXIT Sub
End If
If hLib 0 Then
pProc = GetProcAddress(ByVal hLib, "Hauptprogramm")
If pProc 0 Then
Call CodePtr(pProc) ?
End If
FreeLibrary hLib
End If
End Sub
Leider scheitert mein Vorgehen beim Versuch, die von "GetProcAddress" zurückgegebene Adresse aufzurufen. Die mir von anderen Programmierspachen bekannten Methoden incl. Parameterübergaben funktionieren hier leider alle nicht. Außerdem muss ja auch hier noch der Parameter übergeben werden.
Hat da jemand eine Idee?