Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Parameter-Übergabe von VBA an Batch über

Forumthread: Parameter-Übergabe von VBA an Batch über

Parameter-Übergabe von VBA an Batch über
24.11.2020 19:09:42
VBA
Ich habe ein Problem den Wert "PDF-Name" aus der abgefragten Zelle
mittels VBA-Macro an die ausführende Batch-Prozedur PDFviewer zu übergeben.
In der Excel-Zelle der Wert Anhaenger-DragonFlyWings-Tutorial
Per Macro in die Variable Pdf ausgelesen.
Dieser Wert soll in der Batchprozedur PDFviewer weiterverarbeitet werden.
Das Macro
Sub PDFviewer()
' PDFviewer Makro
Dim Pdf As String
Pdf = ActiveCell.Value
MsgBox Pdf
Dim retVal
retVal = Shell("J:\#TutorialBiblothek\PDFviewer.bat" & Pdf, 1)
' PDF anzeigen
' Tastenkombination: Strg+Umschalt+B
End Sub

Laufzeitfehler '53': Laufzeitfehler
Was mache ich falsch?
Kann mir irgendwer zeigen wie ich den Parameter Pdf übergeben muß?
Dank im voraus Jürgen Hans Breuer
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Parameter-Übergabe von VBA an Batch über
24.11.2020 19:26:33
VBA
wenn ich das richtig nachgeschlagen habe, dann heisst der Fehler. "Datei nicht gefunden".
Hier könntest du mal ansetzen.
AW: Parameter-Übergabe von VBA an Batch über
24.11.2020 19:34:28
VBA
Leerzeichen vergessen?
retVal = Shell("J:\#TutorialBiblothek\PDFviewer.bat " & Pdf, 1)
AW: Parameter-Übergabe von VBA an Batch über
24.11.2020 19:38:01
VBA
vielleicht muß in "Pdf" auch der ganze Pfad inclusive Dateinamen und Endung.
Anzeige
AW: Parameter-Übergabe von VBA an Batch über
24.11.2020 19:41:00
VBA
Wir wollen mal davon ausgehen, dass dort (ActiveCell) wirklich der ganze Pfad drinsteht.. :)
AW: Parameter-Übergabe von VBA an Batch über
24.11.2020 20:00:03
VBA
Hallo Onur
Pdf ist eine Variable Dim Pdf as String und soll den Inhalt
"Anhaenger-DragonFlyWings-Tutorial"
an die Batch-Prozedur PDFviewer.bat übergeben.
Wenn ich mit Parameter & Pdf ausführe
retVal = Shell("J:\#TutorialBiblothek\PDFviewer.bat" & Pdf, 1) FEHLER
ohne Parameter & Pdf
retVal = Shell("J:\#TutorialBiblothek\PDFviewer.bat, 1) KEIN FEHLER
Anzeige
AW: Parameter-Übergabe von VBA an Batch über
24.11.2020 20:09:38
VBA
1) (WIE BEREITS GESAGT) ZWISCHEN PDFviewer.bat UND DEM PARAMETER MUSS EIN LEERZEICHEN SEIN.
2) WOHER SOLL WINDOWS (BZW DIE BATCH-DATEI) WISSEN; IN WELCHEM VERZEICHNIS SICH DIE PDF-DATEI BEFINDET?
AW: Parameter-Übergabe von VBA an Batch über
24.11.2020 20:36:43
VBA
Es ist kein Dateiname es ist ein alphanumerischer String ohne Leerstellen.
Die Batch-Routine händelt dann den Rest
In VBA Pdf in Batch %1%
Echo on
Set $Biblio=%~dp0
CD /d %$Biblio%
Start PDFview.lnk -new-window -named-dest %$Biblio%%1%
pause
exit
Hinter .bat" & steht ein Leerzeichen Was bewirkt das & zwischen .bat" und Pdf ?
Anzeige
AW: Parameter-Übergabe von VBA an Batch über
24.11.2020 20:43:02
VBA
Das & ist im Prinzip das Selbe wie + ("a " + "b" ergibt, ebenso wie "a " & "b" : "a b", hat nur den Vorteil, dass man auch Zahlen hinter & schreiben kann. z.B: Range("A" & x) - wenn x=1 ist ergibt das Range("A1").
AW: Parameter-Übergabe von VBA an Batch über
24.11.2020 19:43:44
VBA
Hallo Jürgen,
wie onur schon schrieb hast Du ein Leerzeichen vergessen, deshalb wurde der Dateiname verändert und die Datei nicht gefunden.
Parameter müssen für die Übergabe an die Batchdatei leerzeichengetrennt angegeben werden. Enthält so ein Parameter
evtl. auch Leerzeichen musst Du sie zusätzlich in "" einschließen.
Gruß Karl-Heinz
Anzeige
AW: Parameter-Übergabe von VBA an Batch über
24.11.2020 20:05:00
VBA
Kein Pfad sondern ein PDF-Name Typ String ohne Leerstellen.
AW: Parameter-Übergabe von VBA an Batch über
24.11.2020 20:14:30
VBA
In ActiveCell muss stehen:
"C:\BLABLA\BLABLA\MeinePdfDate.PDF"
dann klapt es auch mit dem Nachbarn - bzw mit:
retVal = Shell("J:\#TutorialBiblothek\PDFviewer.bat " & Pdf, 1)'LEERZEICHEN HINTER .BAT !!!

Anzeige
AW: Parameter-Übergabe von VBA an Batch über
24.11.2020 20:40:48
VBA
Das war es gewesen.
Die Batch-Routine wird aufgerufen.
Der Parameter wird übergeben.
VIELEN DANK
Gerne !
24.11.2020 21:12:23
onur
;
Anzeige

Infobox / Tutorial

Parameter-Übergabe von VBA an Batch-Dateien


Schritt-für-Schritt-Anleitung

Um einen Parameter aus VBA an eine Batch-Datei zu übergeben, befolge diese Schritte:

  1. Öffne Excel und erstelle ein neues VBA-Makro.

  2. Füge den Code ein:

    Sub PDFviewer()
        ' PDFviewer Makro
        Dim Pdf As String
        Pdf = ActiveCell.Value
        MsgBox Pdf
        Dim retVal
        retVal = Shell("J:\#TutorialBiblothek\PDFviewer.bat " & Pdf, 1)
        ' PDF anzeigen
    End Sub
  3. Stelle sicher, dass in der Zelle, die du abfragst, der komplette Pfad zur PDF-Datei steht, z.B. C:\BLABLA\BLABLA\MeinePdfDate.PDF.

  4. Führe das Makro aus und überprüfe, ob der Parameter korrekt an die Batch-Datei übergeben wird.


Häufige Fehler und Lösungen

  • Laufzeitfehler '53': Dieser Fehler tritt auf, wenn die Datei nicht gefunden wird. Stelle sicher, dass der Pfad zur Batch-Datei korrekt ist.
  • Leerzeichen zwischen .bat und Parameter: Vergiss nicht, ein Leerzeichen zwischen dem Dateinamen und dem Parameter zu setzen. Der Code sollte so aussehen:
    retVal = Shell("J:\#TutorialBiblothek\PDFviewer.bat " & Pdf, 1)
  • Pfad zur PDF-Datei: Vergewissere dich, dass der komplette Pfad zur PDF-Datei in der Zelle steht und keine Leerstellen enthält.

Alternative Methoden

Wenn du Parameter an Batch-Dateien übergeben möchtest, kannst du auch alternative Methoden ausprobieren:

  • Verwendung von cmd: Du kannst die Batch-Datei über die Windows-Eingabeaufforderung aufrufen. Beispiel:

    retVal = Shell("cmd.exe /c J:\#TutorialBiblothek\PDFviewer.bat " & Pdf, 1)
  • Direkte Übergabe von Variablen: Stelle sicher, dass die Variable Pdf den korrekten Wert hat, bevor du sie an die Batch-Datei übergibst.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du einen PDF-Namen an eine Batch-Datei übergeben kannst:

  1. In einer Zelle: C:\BLABLA\BLABLA\MeinePdfDate.PDF

  2. VBA-Code:

    Sub PDFviewer()
        Dim Pdf As String
        Pdf = ActiveCell.Value
        Dim retVal
        retVal = Shell("J:\#TutorialBiblothek\PDFviewer.bat " & Pdf, 1)
    End Sub
  3. Batch-Datei (PDFviewer.bat): Diese Datei könnte wie folgt aussehen:

    @echo off
    Start "" "%1"

Tipps für Profis

  • Verwende Option Explicit: Füge am Anfang deines VBA-Moduls Option Explicit hinzu, um sicherzustellen, dass alle Variablen deklariert werden.
  • Überprüfung des RetVal: Überprüfe den Wert von retVal, um sicherzustellen, dass die Batch-Datei erfolgreich aufgerufen wurde. Ein Wert von 0 bedeutet, dass ein Fehler aufgetreten ist.
  • Debugging: Nutze MsgBox oder Debug.Print, um den Wert von Variablen während der Ausführung des Codes zu überprüfen.

FAQ: Häufige Fragen

1. Frage
Wie kann ich Leerzeichen in meinem Parameter behandeln?
Antwort: Wenn dein Parameter Leerzeichen enthält, solltest du ihn in Anführungszeichen setzen:

retVal = Shell("J:\#TutorialBiblothek\PDFviewer.bat """ & Pdf & """", 1)

2. Frage
Was ist der Unterschied zwischen Shell und cmd?
Antwort: Shell führt einen Prozess in der Windows-Umgebung aus, während cmd eine Eingabeaufforderung startet, die zusätzliche Optionen wie Skripting und Batch-Verarbeitung bietet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige