Einzelnen Beitrag anzeigen

venice2
(Gast)

n/a Beiträge
 
#6

AW: Excel VBA: Declare Function Libname als Variable – Wie geht das?

  Alt 9. Okt 2021, 23:16
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

Geändert von venice2 (10. Okt 2021 um 04:23 Uhr)
  Mit Zitat antworten Zitat