Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Exe starten
#1
hi,

so klappt das:

Code:
Sub Exestarten()
TaskID = Shell("c:\windows\system32\notepad.exe", vbNormalNoFocus)
End Sub

In A33 in Tabelle Rech steht:
Code:
c:\windows\system32\notepad.exe
So klappt es aber nicht. Beim Code eingeben sagt er:
Code:
Sub Exestarten()
TaskID = Shell("Worksheets("Rech").Range("A33")", vbMaximizedFocus)
End Sub
Rech wird dann markiert & gesagt: "Erwarte Listentrennzeichen oder )"
   

Kann ich keine Zelle angeben, wo der Pfad drin steht als Ergebnis?

lieben Dank!

Julia :)
Antworten Top
#2
Hallo,

ungetestet:
Code:
TaskID = Shell("""Worksheets("Rech").Range("A33")""", vbMaximizedFocus)
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • o0Julia0o
Antworten Top
#3
Die Fehlermeldung bleibt leider identisch.

Wenn ich es so mache:

Code:
Sub Exestarten()
TaskID = Shell("""Worksheets(Rech).Range(A33)""", vbMaximizedFocus)
End Sub
dann ist der Fehler weg. Aber wenn ich den Code ausführe, sagt der: "Datei nicht gefunden". Obwohl ja der gleiche Dateiname im Feld A33 steht, wie ja ganz oben im 1. funktionierendem Beispiel. Die Datei ist vorhanden. Der Pfad auch korrekt. Wenn ich ihn aus dem Feld nehme und dann im Explorer einfüge, wird die Datei gestartet.
   
Das macht überigens das gleiche:

Code:
Sub Exestarten()
TaskID = Shell("Worksheets(Rech).Range(A33)", vbMaximizedFocus)
End Sub
Antworten Top
#4
Hallo,

das ist gar nicht so einfach, gerade die Schreibweise nicht zu probieren, die funktioniert. ;)
Sub Exestarten()
TaskID = Shell(Worksheets("Rech").Range("A33").Value, vbMaximizedFocus)
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • o0Julia0o
Antworten Top
#5
Sorry, habe mich vertan, eigentlich meinte ich es so:
Code:
TaskID = Shell(""""&Worksheets("Rech").Range("A33")&"""", vbMaximizedFocus)
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • o0Julia0o
Antworten Top
#6
Und was fängt man dann mit dem Long an?
Gibt es eine Vorgeschichte?
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#7
(13.12.2017, 14:14)Kuwer schrieb: das ist gar nicht so einfach, gerade die Schreibweise nicht zu probieren, die funktioniert. ;)
Sub Exestarten()
TaskID = Shell(Worksheets("Rech").Range("A33").Value, vbMaximizedFocus)
End Sub
tja, und ich habe bestimmt noch 15-19 weitere Schreibweisen probiert gehabt. Deine funzt genauso wie die von Steuerfuzzi:
(13.12.2017, 14:40)Der Steuerfuzzi schrieb: Sorry, habe mich vertan, eigentlich meinte ich es so:
Code:
TaskID = Shell(""""&Worksheets("Rech").Range("A33")&"""", vbMaximizedFocus)

Welches Long meinst du?

Danke!
Antworten Top
#8
(14.12.2017, 17:16)o0Julia0o schrieb: Welches Long meinst du?
Ralf meint wohl den Rückgabewert, den Shell zurückgibt und den Du in die Variable TaskID schreibst (dies ist mW die Tasknummer des Shell-Befehls).
Gruß
Michael
Antworten Top
#9
achso, damit kann man dann den task wieder schließen. Allerdins müsste man dann die Zeit angeben, bevor man die exe ausfhürt, wie lange sie laufen soll. Wir nicht genutzt von mir. Aber anders kann ich auch keine exe-Datei starten.

Interessant wäre, wenn man einen key mitgeben könnte, womit man die dann wieder schließen könnte, wenn die exe läuft.
Antworten Top
#10
Moin!
(14.12.2017, 18:40)o0Julia0o schrieb: Aber anders kann ich auch keine exe-Datei starten.
Na einfach so:
Code:
Shell "c:\windows\system32\notepad.exe", vbNormalNoFocus
OHNE Klammer um den Pfad.
(14.12.2017, 18:40)o0Julia0o schrieb: Interessant wäre, wenn man einen key mitgeben könnte, womit man die dann wieder schließen könnte, wenn die exe läuft.
Den brauchst Du nicht:
Sub AufUndZu()
 Dim objWMI As Object, objProcessList As Object, objProcess As Object
 'Notepad öffnen
 Shell "c:\windows\system32\notepad.exe", vbNormalNoFocus
 Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
 Set objProcessList = objWMI.ExecQuery("Select * from Win32_Process Where Name = 'notepad.exe'")
 'Schließen
 For Each objProcess In objProcessList
   objProcess.Terminate (0)
 Next
End Sub

Ich befürchte aber, Du machst den hundertsten Schritt vor dem dritten.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • o0Julia0o
Antworten Top


Gehe zu:


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