Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Windows App mit VBA öffnen
#1
Hallo liebe Excel-Profis,
ich suche einen Weg um eine WindowsApp (WhatsApp) per Excel VBA über mein Surface zu öffnen. Es geht um die App und nicht um die Browser Version. Der Shell-Befehl scheint irgendwie Probleme zu machen. Eine Verknüpfung der App ist auf meinem Desktop, allerdings funktioniert der Befehl: 

myapp = Shell("C:\Users\PC\Desktop\WhatsApp.lnk")

nicht. Wahrscheinlich weil es eine Verknüpfung ist?? Den eigentlichen Pfad der App konnte ich nur bedingt herausfinden, allerdings kann ich diese .exe nichtmals per Doppelklick öffnen.

myapp = Shell("C:\ProgramFiles\WindowsApps\5319275A.WhatsAppDesktop_2.2310.3.0_x64__cv1g1gvanyjgm\WhatsApp.exe")

Dieser Befehl hat tatsächlich eine Zeit lang funktioniert, jetzt aber nicht mehr. Der Pfad scheint sich mit der Zeit zu ändern (Ordnername hat sich mit der Zeit geändert, also ist er dynamisch?!). Seit dem neuen Ordnernamen funktioniert der Befehl nicht mehr. Per Doppelklick auf die .exe kommt neuerdings die Meldung: "mrt100_app.dll nicht gefunden". Per Desktop Verknüpfung läuft WhatsApp aber einwandfrei.

Gibt es dafür eine Lösung? Das schönste wäre nach meinem Denken die nicht dynamische .lnk aufbdem Desktop zu öffnen?


Grüße aus dem Ruhrpott!
Antworten Top
#2
Hallo,
um eine Verknüpfung zu öffnen, kann man den folgenden Code verwenden:
vbnet
Code:
Sub openShortcut()
    Dim shell As Object
    Set shell = CreateObject("WScript.Shell")
    shell.Run "C:\Users\PC\Desktop\WhatsApp.lnk"
    Set shell = Nothing
End Sub
Wenn der Pfad zur App dynamisch ist, könntest du auch versuchen, die App per Windows-Suche zu finden und zu öffnen. Der folgende Code sollte dies ermöglichen:
vbnet
Code:
Sub openApp()
    Dim shell As Object
    Dim appPath As String
    Set shell = CreateObject("WScript.Shell")
    appPath = GetAppPath("WhatsApp") 'Anwendungsname hier eintragen
    If appPath <> "" Then
        shell.Run appPath
    Else
        MsgBox "App nicht gefunden."
    End If
    Set shell = Nothing
End Sub

Function GetAppPath(appName As String) As String
    Dim objShell As Object
    Dim objFolder As Object
    Dim objFolderItem As Object
    Dim path As String
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace("C:\Program Files\WindowsApps")
    For Each objFolderItem In objFolder.Items
        If InStr(objFolderItem.Name, appName) Then
            path = objFolderItem.Path
            Exit For
        End If
    Next
    GetAppPath = path
    Set objShell = Nothing
    Set objFolder = Nothing
    Set objFolderItem = Nothing
End Function
Hierbei wird die Windows-Suche in dem Ordner "C:\Program Files\WindowsApps" genutzt, um den Pfad zur App zu finden.
Ich hoffe, dass dir diese Lösungsansätze weiterhelfen.
[-] Folgende(r) 1 Nutzer sagt Danke an Celle für diesen Beitrag:
  • Davidp
Antworten Top
#3
Wink 
Genau danach habe ich gesucht. Der Lösungsansatz funktioniert perfekt. Vielen Dank! 19
Antworten Top
#4
Ich möchte vorschlagen:

Code:
Sub M_snb()
    ThisWorkbook.FollowHyperlink "F:\coreftp\coreftp.exe"
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste