Zitat:
Zu Punkt 1: Es wird in dem Order der exe gesucht, nicht in dem Ordner wo sich das Dokument befindet.
Eine *.txt Datei wird mit einem Text Editor gestartet!
Eine *.xls\*.xlsx\*.xlms Datei ist eine Excel Datei und wird mit Excel gestartet.
VBA ist eine Programmiersprache mit der man Macros (innerhalb der/für) Excel Datei\en Programmieren kann.
Zitat:
Visual Basic for Applications ist eine Skriptsprache, die ursprünglich für die Steuerung von Abläufen der Microsoft-Office-Programmfamilie entwickelt wurde.
Sie wurde aus dem von Microsoft entwickelten BASIC-Dialekt Visual Basic abgeleitet.
Nun die Frage interessiert es eine Excel Datei ob sich eine Exe innerhalb seines Pfades befindet um diese Ausführen zu können? Nein!
Also wenn es sich hier um eine Excel Datei handelt die wie auch immer gestartet wird (letztendlich mit Excel) dann interessiert es diese Datei nicht
ob sich eine Exe in seinem ThisWorkbook.Path befindet.
Dementsprechend war meine Aussage berechtigt.
Es wird im Pfad der Excel Datei gesucht nicht im Pfad der EXE.
Man benötigt keine Exe um *.xlsx Dateien bzw. Macros aus dieser heraus auszuführen. (abgesehen von Excel natürlich)
Aber egal einige wissen es halt besser.
Zitat:
Ja, das kenne ich auch: Das nennt man Theorie...
Bei mir ist zwischen Theorie und Praxis – aus welchen Gründen auch immer – eine riesige Kluft vorhanden
Ja das kenne ich auch.
Wenn ich früher in VB6
Dll's finden wollte die nicht registriert werden mußte ich diese immer im Pfad der VB6.exe ablegen
damit sie vom Compiler gefunden wurden. Hat mich auch immer genervt.
PS:
Was du noch versuchen könntest setze die Umgebungsvariable selbst.
Danach könntest du dir den Pfad Windows ersparen. Vielleicht hilft es dir ja.
bsp:
Code:
'In ein Modul
Public Declare Function SetEnvironmentVariable Lib "kernel32.dll" Alias "SetEnvironmentVariableA" ( _
ByVal lpName As String, _
ByVal lpValue As String _
) As Long
Public Function RPP(ByVal fp As String) As String
RPP = IIf(Mid$(fp, Len(fp), 1) <> "\", fp & "\", fp)
End Function
Public Function FileExist(ByVal Bestand As String) As Boolean
If InStr(1, Bestand, ".") = 0 Then
FileExist = False
Exit Function
End If
On Error Resume Next
Call FileLen(Bestand)
FileExist = (err = 0)
On Error GoTo 0
End Function
'....... end Modul
Dim MyLibPath As String
'Set Path to MyLib
MyLibPath = "%Path%;" & ThisWorkbook.Path
SetEnvironmentVariable "Path", MyLibPath
'Überprüfe "MyLib.dll" ob sie existiert
If Not FileExist(RPP(ThisWorkbook.Path) & "\MyLib.dll") Then
MsgBox "MyLib.dll existiert nicht!", vbCritical, "MYLIB.DLL"
End 'gleiche wie Halt unter Delphi
End If