Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Suche nach einer Anwednung...per VBA | Herbers Excel-Forum


Betrifft: Suche nach einer Anwednung...per VBA von: KLE
Geschrieben am: 04.01.2012 11:16:52

Hi,

...gibt es eine Möglichkeit in VBA, auf einem Rechner nach einer bestimmten Datei / einer Programm-Exe zu suchen?

Ich möchte gern per Klick z.B. das Scanner-Tool von uns starten...und wenn das Tool nicht vorhanden ist auf dem Rechner - hätte ich gern dem User die Möglichkeit geben, "Sein" passendes Programm (exe-Datei) zu wählen. Diesen Pfad würde ich in die Datei speichern...dann hat er immer darauf zugriff.

Gruß und Danke!
Kay

  

Betrifft: AW: Suche nach einer Anwednung...per VBA von: dan
Geschrieben am: 04.01.2012 14:40:12

Hallo Kay,
man kann Shell benutzen. Wenn Shell den file nicht findet, kommt es zu einem Fehler 53. Diesen Fehler kann man abfangen und dem Benutzer die Moeglichkeit geben eine andere exe-Datei oeffnen, etwa so:
Gruss dan, cz.

Option Explicit

Public Sub Main()
    Dim path As String
    Dim taskId As Variant
    Dim errorNumber As Long
    
    errorNumber = 0
    path = "C:\WINDOWS\CALC.EXE" ' "C:\WINDOWS\system32\CALC.EXE" '
    taskId = RunExecutable(path, errorNumber)
    
    If (errorNumber <= 0) Then
        ' OK, no error
        MsgBox "OK, program's task ID is: '" & taskId & "'"
        Exit Sub
    End If
    
    ' Error occured, check for error 53
    If (errorNumber = 53) Then
        MsgBox "File not found: '" & path & "'"
        ' ...und wenn das Tool nicht vorhanden ist auf dem Rechner -
        ' hätte ich gern dem User die Möglichkeit geben, "Sein" passendes Programm (exe-Datei)  _
zu wählen.
        ' Diesen Pfad würde ich in die Datei speichern...dann hat er immer darauf zugriff.
        Dim filter As String
        Dim fileName As Variant
        filter = "Exe files (*.exe),*.exe"
        
        fileName = Application.GetOpenFilename(filter, 1, "Wähle dein passendes Programm (exe- _
Datei) aus ...")
        
        If (fileName <> False) Then MsgBox fileName
    End If
End Sub

Private Function RunExecutable(ByVal path As String, ByRef errNumber As Long) As Variant
    ' Shell Function:
    ' Runs an executable program and returns a Variant (Double) representing the program's task  _
ID if successful, otherwise it returns zero.
    
    ' If the Shell function successfully executes the named file, it returns the task ID of the  _
started program.
    ' The task ID is a unique number that identifies the running program. If the Shell function  _
can't start the named program, an error occurs.
    
    On Error GoTo errHandler
    
    Dim taskId As Variant
    
    taskId = Shell(path, vbNormalFocus) ' Run executable on path
    RunExecutable = taskId
    
    Exit Function
    
errHandler:
    errNumber = Err.Number
End Function



  

Betrifft: AW: Danke...genau was ich suchte!!! o.T. von: KLE
Geschrieben am: 04.01.2012 22:56:24