Wie zu verwenden dll im gleichen Verzeichnis wie die excel-Datei
Dies ist etwas im Zusammenhang mit meiner andere Frage.
Habe ich mit einem dll zu acompany einer excel-Tabelle. Alles ist derzeit mit der dll und die excel nutzt es ganz gut. Aber ist es möglich zu bestimmen, dass eine dll befindet sich im selben Verzeichnis wie die excel-Datei bei der Deklaration von Funktionen?
Declare Sub FortranCall Lib "Fcall.dll" (r1 As Long, ByVal num As String)
Unfortunetly das funktioniert nicht, ich habe Sie etwas wie:
Declare Sub FortranCall Lib "C:\temp\Fcall.dll" (r1 As Long, ByVal num As String)
Dies funktioniert, wird aber zu Kopfschmerzen verursachen, wenn die Verteilung zu meinem Büro-Kollegen. Platzieren Sie die dll in c:\windows\system32 etc. ist nicht wirklich eine option, entweder.
- Hi, so was habe man schließlich mit gehen ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier sind drei Möglichkeiten für das dynamische laden/aufrufen von DLLs von VBA, einschließlich links zu relevanten Informationen und Beispielcode. Kann nicht sagen, dass ich jemals in Benutzung hatte keine der beschriebenen Lösungen gibt es, aber es scheint wie eine vernünftige exploration der Optionen im Licht der VBA brauchst für einen statischen Pfad.
Application.Run
Anrufe, um es aufzurufen. Erfordert Vertrauenswürdige programmatischen Zugriff auf die VBIDE-API (d.h. Sie erlauben VBA zum ausführen von code generiert code, der dann ausgeführt wird... wie makro-Viren).LoadLibrary
Win32-API... und jetzt hast du den Zeiger und Adressen: diese Angst-code (.zip-download) ist im wesentlichen eine riesige wartbaren hack, der verwendet assembly-Sprache zu ermöglichen aufrufen der API-Funktionen von Namen. Wie es aussieht, funktioniert nur für eine Teilmenge der unterstützten Win32-API-Funktionen aber.Hier eine weitere mögliche Lösung, die nahelegt, dass programmgesteuert aktualisieren der PATH-Umgebungsvariable vor dem Aufruf in der DLL. Keine schlechte Idee, wenn es funktioniert, wie man hinzufügen könnte Ihnen dieses workbook open-Ereignis.
Glück!
Den Weg, den ich in der Regel darauf achten, dieses wird durch das hinzufügen:
Zu: Private Sub Workbook_Open()
ChDir() sollte den trick tun. Es funktioniert möglicherweise nicht auf Netzwerk-Ordner, obwohl.
Nun halten Sie Ihre .dll im gleichen Ordner wie die Arbeitsmappe.
Können Sie die DLL in ein Verzeichnis, und fügen Sie es auf den Pfad EnVar.
ActiveWorkbook.Path
gibt Sie den vollständigen Pfad zu dem Ordner, der die aktuell aktive Arbeitsmappe. Also versuchen Sie dies: