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
#11
wow o.k., so klappt es:
Code:
Shell "c:\windows\system32\notepad.exe", vbNormalNoFocus
wenn ich es so mache:
Code:
Sub Exestart()
Dim Dateiname As String
Dim Exepfad As String
Dim TaskID As Long
Exepfad = Worksheets("Rech").Range("A32")
If Worksheets("Rech").Range("A32") = "NA" Then
MsgBox "Kein Pfad vorhanden"
Exit Sub
Else: Shell "Exepfad, vbMaximizedFocus"
End If
End Sub
klappt es nicht. So aber wiederum schon:
Code:
Sub Exestart()
Dim Dateiname As String
Dim Exepfad As String
Dim TaskID As Long
Exepfad = Worksheets("Rech").Range("A32")
If Worksheets("Rech").Range("A32") = "NA" Then
MsgBox "Dateipfad nicht vorhanden"
Exit Sub
Else: TaskID = Shell(Exepfad, vbMaximizedFocus)
End If
End Sub
Warum klappt die 1. Variante nicht? Dort wird dann ja TaskID zwingend benötigt.
Antworten Top
#12
Zitat:Else: Shell "Exepfad, vbMaximizedFocus"
Wenn Du etwas in Anführungsstriche setzt, dann wird es zu einer normalen Zeichenkette (String). Damit ist es nicht mehr die Variable Exepfad und die Konstante vbMaximizedFocus, sondern die Zeichenkette "Exepfad, vbMaximizedFocus".

Daher musst Du die Anführungsstriche weglassen. Wenn Du den Inhalt des Strings in Anführungsstriche setzen willst oder musst, dann musst Du die Anführungsstriche extra zum String hinzufügen. Das geht, wenn man diese doppelt verwendet, z. B. so:
Code:
Stringvariable = "Das nächste Wort steht in Anführungszeichen ""Wort"""
Das ganze kann man auch entsprechend verketten, in Deinem Beispiel so
Code:
Exepfad = """" & Worksheets("Rech").Range("A32") & """"
oder
Code:
Else: Shell """" & Exepfad & """", vbMaximizedFocus

Wenn Du die Anführungsstriche nicht brauchst (z. B. wenn im Pafd kein Leerzeichen enthalten ist), dann kannst Du sie auch weglassen:
Code:
Else: Shell Exepfad, vbMaximizedFocus
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • o0Julia0o
Antworten Top
#13
Ist das nicht etwas übertrieben(es funktioniert jedenfalls nicht)?
(15.12.2017, 08:37)Der Steuerfuzzi schrieb:
Code:
Exepfad = """" & Worksheets("Rech").Range("A32") & """"
So sollte es doch reichen:
Code:
Exepfad = """ & Worksheets("Rech").Range("A32") & """
denn dann wäre das mittlere " eingerahmt durch 2 " jeweils an den Enden als Textmarkierung. Wenn ich jetzt die Zahl 1 vorne und hinten haben würde, wäre das dann so:
Code:
Exepfad = "1" & Worksheets("Rech").Range("A32") & "1"
und nicht so:
Code:
Exepfad = 1 & Worksheets("Rech").Range("A32") & 1
Aber es funktioniert nicht. Aber so funktioniert es:
Code:
Exepfad = "" & Worksheets("Rech").Range("A32") & ""

Aber wie auch immer, ich muss dieses Task-ID dazuschreiben, sonst funktioniert es bei keiner der Varianten - also so:
Code:
Sub Exestart()
Dim Dateiname As String
Dim Exepfad As String
Dim TaskID As Long
Exepfad = "" & Worksheets("Rech").Range("A32") & ""
If Worksheets("Rech").Range("A32") = "NA" Then
MsgBox "Dateipfad nicht vorhanden"
Exit Sub
Else: TaskID = Shell(Exepfad, vbMaximizedFocus)
End If
End Sub
Antworten Top
#14
(15.12.2017, 13:16)o0Julia0o schrieb: So sollte es doch reichen:
Code:
Exepfad = """ & Worksheets("Rech").Range("A32") & """
Der Teil """ & Worksheets(" wäre ein String. Alles was danach kommt würde als Befehl interpretiert, was dann aber zu einem Fehler führt, da er mit Rech nichts anfangen kann!

(15.12.2017, 13:16)o0Julia0o schrieb:
Code:
Exepfad = 1 & Worksheets("Rech").Range("A32") & 1
Das würde genauso gehen, da Excel die Zahlen in einen String umwandelt.

(15.12.2017, 13:16)o0Julia0o schrieb: Aber so funktioniert es:
Code:
Exepfad = "" & Worksheets("Rech").Range("A32") & ""
Das ist das gleiche wie:
Code:
Exepfad = Worksheets("Rech").Range("A32")
Du fügst lediglich zwei Leerstrings hinzu, was aber keine Änderung bringt.

Ich weiß ja nicht, was Du machst, aber bei mir läuft das:
Code:
Sub Exestart2()
Dim Dateiname As String
Dim Exepfad As String
Dim TaskID As Long
Exepfad = Worksheets("Rech").Range("A32")
If Worksheets("Rech").Range("A32") = "NA" Then
    MsgBox "Dateipfad nicht vorhanden"
    Exit Sub
Else
    Shell Exepfad, vbMaximizedFocus
End If
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • o0Julia0o
Antworten Top
#15
ja o.k., so funktioniert das, danke. Ich dachte erst du meintest es so:
Code:
Exepfad = """" & Worksheets("Rech").Range("A32") & """"
Antworten Top
#16
.thx.

Exe vs. Exe vs. Exe
Ich verwende immer den identische code - nur den Inhalt von Feld A36 ändere ich ab. Also es liegt an den Exe-Dateien. Manche können über ein und denselben Code nicht gestartet werden:

Exe-Version 1:
Also noetpad.exe kann ich so starten:
Code:
Dim Dateipfad As String
Dateipfad = Worksheets("Rech").Range("A36")
Call Shell(Dateipfad, vbMaximizedFocus)
End Sub
A36 = C:\Windows\notepad.exe

Exe-Version 2:
Aber manche exen nicht. Dann passiert beim Ausführen vom VBA-Code nichts. Auch kein Fehler wird angezeigt. Die Exe-Datei aber auch nicht gestartet.
Wenn ich diese exen explorer doppelklicke, wird das jeweilie Programm ganz normal gestartet. Genauso als wenn ich die notepad.exe im Explorer doppelt klicke. Kann man solche Exe-Dateien denn auch irgendwie über Excel zum Start bewegen?

Exe-Version 3:
Bei anderen Exen sagt er folgendes:
   
Das wird gelb markiert: Call Shell(Dateipfad, vbMaximizedFocus)
   
A36=D:\Nero\NeroExpressPortable.exe
Antworten Top
#17
Hallöchen,

zu 2. solltest Du noch beschreiben, um welche exe'n es geht. Mal 2 Hinweise:
- schaue mal in den Taskmanager, ob die exe nicht doch gestartet wurde
- manche exe'n muss man mit cmd /s starten

zu 3. - stimmt eventuell der Pfad nicht?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#18
Du benützt das Forum als Privatkurs mit Privatlehrern ?

Dazu gibt es bessere Alternative.
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