Batch-Datei per VBA aufrufen?
#11
Hallo Julia,

Zitat:Sicher, aber ich muss mit Variablen arbeiten.

so kann man einen Pfad als Variable übergeben.
Kannst Du damit weitermachen?

Zitat:Sub test()
a = ActiveWorkbook.Path
MsgBox a
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Käpt'n Blaubär für diesen Beitrag:
  • o0Julia0o
Top
#12
ja, das hatte ich ja bereits so ausgeben lassen. Die Frage ist, ob VBA automatisch umschließende Anführungszeichen bei disem Code hier setzt:

Code:
Dim Pfadname As String
Dim Dateiname As String
Dateiname = Worksheets("Rech").Range("B34")
Pfadname = ActiveWorkbook.Path & "\Starter\"
Call Shell(Pfadname & Dateiname, vbMaximizedFocus)

Wird es so ausgeführt:

Code:
Pfadname & Dateiname
oder so:

Code:
"Pfadname & Dateiname"
Top
#13
Hallo Julia,

Excel und VBA sind schlau, aber nun überforderst Du sie.

Das was Du da in "Gänsebeinchen" setzen willst sind mehrere Variable.
Setzt Du die Dinger in Gänsefüßchen und so, wie Du das da vorgeführt
hast, dann ist das was bleibt einfach nur eine Zeichenfolge, also ein
sogenannter "String". Den kann man einblenden oder ausblenden, kopieren
oder verschieben, aber dann ist auch schon das Ende der Fahnenstange
erreicht. Das ist doch nicht das, was Du damit tun willst, oder?

Woher soll VBA denn wissen, daß Du um eine echte Variable, die Du auch
hoffentlich als solche deklariert hast, siehe auch Option Explicit, einen
popeligen String zu machen.
Na klar kann das VBA auch, ... jedenfalls dann, wenn man dafür ein Makro
geschrieben hat :05: .
Trotzdem bleibt diese ganze Geschichte hmmm, gelinde gesagt, sinnfrei.
Ich jedenfalls kann darin nicht mal ansatzweise einen Sinn erkennen.
[-] Folgende(r) 1 Nutzer sagt Danke an Käpt'n Blaubär für diesen Beitrag:
  • o0Julia0o
Top
#14
Hallo Julia,

lasse es einfach so. ;)
Da du ohnehin nicht die Anwendung bei der Shell angibst, werden die doppelten "" auch nicht gebraucht.

also müsste 
"" & Pfadname & Dateiname & ""

oder

"""" & Pfadname & Dateiname & """"

oder auch nur

Pfadname & Dateiname

funktionieren.
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
[-] Folgende(r) 1 Nutzer sagt Danke an chris-ka für diesen Beitrag:
  • o0Julia0o
Top
#15
Hallo Julia,

auf der sicheren Seite bist Du, wenn Du das zu Übergebende in Anführungszeichen packst, weil es sonst nicht funktioniert, sobald Leerzeichen enthalten sind.
Weil das schon etwas verwirrend sein kann mit den ganzen Anführungszeichen, benutze ich gerne die Chr()-Funktion für die umgebenden Anführungszeichen:
Debug.Print Chr(34) & Pfadname & Dateiname & Chr(34)   'Ausgabe im Direktfenster
MsgBox Chr(34) & Pfadname & Dateiname & Chr(34)        'Ausgabe im Meldungsfenster
Shell Chr(34) & Pfadname & Dateiname & Chr(34)         'Übergabe an Shell
34 ist der Ascii-Code für ein Anführungszeichen.

Gruß Uwe
Top
#16
Hallo Uwe,

Einspruch ;)

Bei Wscript.run 
Müssten unbedingt die doppelten "" gesetzt werden, sonst geht es nicht.
Wobei die Shell vertragt Leerzeichen, wenn die Anwendung nicht angegeben ist.

lg
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
[-] Folgende(r) 1 Nutzer sagt Danke an chris-ka für diesen Beitrag:
  • o0Julia0o
Top
#17
Hallo Chris,

(21.06.2018, 08:38)chris-ka schrieb: Einspruch ;)

Bei Wscript.run 
Müssten unbedingt die doppelten "" gesetzt werden, sonst geht es nicht.

das ist ja kein Problem. Dann nimmt man eben 2 davon. Wink
MsgBox Chr(34) & Pfadname & Dateiname & Chr(34)
MsgBox String(2, Chr(34)) & Pfadname & Dateiname & String(2, Chr(34))
Ich wollte ja nur demonstrieren, wie man ohne große Hirnakrobatik Anführungszeichen drumherum machen kann. Smile
Gerade Julia jedoch hat das wohl nicht verstanden, wenn ich ihre Bedankungen richtig interpretiere.  Blush

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • o0Julia0o
Top


Gehe zu:


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