"Ausführen in"-Befehl bei externem Programmaufruf?

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm MsgBox
Bild

Betrifft: "Ausführen in"-Befehl bei externem Programmaufruf?
von: Phil
Geschrieben am: 28.07.2015 11:11:59

Hallo liebe Gemeinde,
ich sitze vor und grüble an folgendem Problem: Ich habe eine Userform, mit der ich viele Arbeitsabläufe vereinfachen will im Werk. Dazu habe ich den Aufruf von allen notwendigen Programmen als Button-Click-Events hinterlegt - funktioniert auch bei Standardprogrammen wie dem IE, Outlook und co. problemlos. Jedoch habe ich 3 firmeninterne Anwendungen, die mit einem gewissen Pfad und Attributen ausgeführt werden, jedoch ist zusätzlich in der Verknüpfung noch ein weiterer Pfad unter "Ausführen in" hinterlegt. Lasse ich das Programm ohne Attribute und "Ausführen in"-Pfad starten, kann es nicht genutzt werden.
Ich hoffe, ich habe mein Problem möglichst anschaulich rübergebracht und hoffe auf Eure Hilfe - vielen Dank!
Philipp

Bild

Betrifft: AW: "Ausführen in"-Befehl bei externem Programmaufruf?
von: Michael
Geschrieben am: 28.07.2015 14:46:38
Hi Philipp,
wie wäre es, wenn Du das Programm nicht direkt startest, sondern die Verknüpfung? In der sind ja alle nötigen Angaben hinterlegt.
Das bitte in ein Modul kopieren:

Public Declare Function ShellExecute _
Lib "shell32.dll" _
Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) _
As Long
Sub test()
ShellExecute 0, "OPEN", "C:\DeinPfad\DeineSoftware.lnk", "", "", 1
End Sub
Ein einfacher Shell-Aufruf scheint nicht zu tun, da bekommt René einen Fehler und ich auch:
https://www.herber.de/forum/archiv/1100to1104/1100331_Desktop_Verknuepfung_im_Excel_VBA_starten.html
Aber der obige Code, den ich bei
http://www.pcreview.co.uk/threads/running-an-application-from-its-shortcut-not-exe-using-vba.2625020/
gefunden habe, tut brav.
Schöne Grüße,
Michael

Bild

Betrifft: AW: "Ausführen in"-Befehl bei externem Programmaufruf?
von: Phil
Geschrieben am: 28.07.2015 15:17:20
Hallo Michael,
erst einmal danke für Deinen Support! Jedoch tut er bei mir nicht brav - genauer gesagt tut sich gar nichts. Habe wie von Dir beschrieben die Public Declare in ein neues Modul geschoben, und rufe über einen Button die ShellExecute auf. Link stimmt, tut sich nix. Any ideas? :-(

Bild

Betrifft: leider nein - wieder offen
von: Michael
Geschrieben am: 29.07.2015 15:38:44
Hi Philipp,
ich habe es nochmal mit einer andern .lnk ausprobiert...
Wenn man genau hinsieht, fällt auf, daß das Ding als "Function" deklariert ist. Es funktioniert zwar auch wie im Beispiel, man bringt sich jedoch um die Auswertung des Rückgabewertes.
Ich habe es vorhin nochmal versucht, mich aber vertippt, und es schien "gar nichts" zu passieren. Mit

msgbox ShellExecute (0, "OPEN", "C:\DeinPfad\DeineSoftware.lnk", "", "", 1)

habe ich dann 2 erhalten, das steht für "Datei nicht gefunden"
42 ist nicht nur *die* Zahl bei D. Adams, sondern auch: "ohne Fehler ausgeführt".
Eine Liste der Rückgabewerte findet sich u.a. bei: http://www.vbarchiv.net/api/api_shellexecute.html
Hm. In solchen Fällen kopiere ich mir immer den kompletten Pfad (zu der .lnk), aus dem Kontextmenü unter "Sicherheit" - "Objektname", dadurch sind Tippfehler ausgeschlossen.
Schöne Grüße,
Michael

Bild

Betrifft: AW: leider nein - wieder offen
von: Phil
Geschrieben am: 29.07.2015 15:43:53
Hallo Michael,
ich hab es mittlerweile auch ohne ShellExecute hinbekommen, mit einem normalen Shell:


Dim FileName As String
    FileName = Environ("USERPROFILE") & "\Desktop\" & "DieVerknüpfung.lnk"
    FileName = "cmd /c " & """" & FileName & """"
    Call Shell(FileName, vbHide)
Damit öffnet er ebenso die Applikation mit allen vorangegangenen Attributen. Dennoch danke für Deine Bemühungen! Großartig! :-)
Liebe Grüße,
Philipp

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Mittelwert mit Bedingungen"