Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Aufruf eines Programms mit Parametern aus VBA

Aufruf eines Programms mit Parametern aus VBA
Holger
Hallo und Guten Morgen Forum,
bislang verwende ich eine BATCH Datei, um eine SQL Abfrage mittels AQT (Advanced Query Tool) zu starten. Da ich nun die SQL Datei automatisch per VBA erzeuge, würde ich gerne auf die Batch Datei verzichten und das Programm direkt aus VBA aufrufen.
In der Batch Datei ist der Aufruf simpel, das Programm und die SQl Abfragedatei als Parameter.
In VBA funktioniert das nicht, gibt es eine Möglichkeit, dies per VBA aufzurufen.
"C:\Programme\Advanced Query Tool\aqt.exe" GetPublishesTelecom.sql
Anzeige
AW: Aufruf eines Programms mit Parametern aus VBA
15.11.2010 13:07:39
Andi
Hallo Holger,
die Möglichkeit gibt es.
http://www.vbarchiv.net/commands/cmd_shell.html
Um eine .exe, .com, .bat oder .pif zu starten reicht die VB-Eigene Funktion "Shell", um aber auch andere Dateien öffnen zu können, brauchst du die API "ShellExecute"
Ich hoffe, das war das, was du gesucht hattest.
Gruß Andi
Anzeige
Parameter geht nicht :(
15.11.2010 13:27:39
Holger
Hi Andi,
das hatte ich auch schon, esklappt nur leider mit der Parameterübergabe nicht.
Das programm selber wird geöffnet, aber wenn ich einen Parameter hinzufüge,
erscheint zwar keine Fehlermeldung, es passiert aber auch rein gar nix.
Hast du noch eine Idee?
Sub Sonicht
Set objShell = CreateObject("Shell.Application")
strSQLFile = strHomePath & "\aqt.exe"
objShell.ShellExecute strSQLFile, "", "GetPublishesTelecom.sql", "open", 1
End Sub

Anzeige
AW: Aufruf eines Programms mit Parametern aus VBA
15.11.2010 13:43:36
Rudi
Hallo,
normalerweise sollte
Shell "C:\Programme\Advanced Query Tool\aqt.exe GetPublishesTelecom.sql"
funktionieren.
Shell "notepad.exe c:\test\test.txt" klappt jedenfalls.
Gruß
Rudi
Leider nein
15.11.2010 13:55:27
Holger
Hi Rudi,
genau das klappt leider nicht!
Vielleicht liegt es am AQT, aber in der Bat datei steht der Programmaufruf
in Anführungszeichen und danach ohne der Parameter.
Aber auch wenn ich mir einen String bastele, der genau so aussieht,
klappt es nicht.
Noch eine Idee? Ist echt zum Verzweifeln. ShellExecute hilft mir wohl nicht,
da hier der Dateityp bekannt sein müßte.
Anzeige
Hast du schon mal versucht,..
15.11.2010 13:59:01
Rudi
Halllo,
die Batch per VBA aufzurufen?
Shell "c:\test\MeineBatch.bat"
Gruß
Rudi
AW: Hast du schon mal versucht,..
15.11.2010 14:06:57
Holger
Hi Rudi,
das geht, aber ich wollte ja eigentlich keine Batch Datei mehr, sondern direkt aus VBA.
Also bei mir ...
15.11.2010 14:07:48
Rudi
Hallo,
funkt beides:
Sub vvv()
Shell "c:\test\mybat.bat"
End Sub

Sub yyy()
Shell "notepad.exe c:\test\test.txt", vbNormalFocus
End Sub
In mybat.bat steht
"notepad.exe" c:\test\test.txt
Gruß
Rudi
Anzeige
AW: Also bei mir ...
15.11.2010 14:15:36
Holger
Hi Rudi,
es muss am AQT liegen, denn mit dem Notepad geht auch beides bei mir.
AW: Also bei mir ...
15.11.2010 14:22:59
Rudi
Hallo,
vielleicht so:
Sub ExecuteAQT()
Const sBat As String = "c:\test\aqt.bat"
Open sBat For Output As #1
Print #1, """C:\Programme\Advanced Query Tool\aqt.exe""" & " GetPublishesTelecom.Sql"
Close #1
Shell Chr(34) & sBat & Chr(34)
Kill sBat
End Sub

Anzeige
AW: Also bei mir ...
15.11.2010 14:29:46
Holger
Nix zu machen, geht einfach nicht.
Ich verstehe das nicht ...
Aufruf eines Programms mit Parametern aus VBA
15.11.2010 17:45:37
Anton
Hallo Holger,
du musst vllt den Pfad zu der sql Datei mitgeben , etwa so:
Shell "C:\Programme\Advanced Query Tool\aqt.exe C:\Ordner\GetPublishesTelecom.sql"
mfg Anton
AW: Aufruf eines Programms mit Parametern aus VBA
15.11.2010 18:44:18
Holger
Hallo,
Danke für deine Antwort, aber das habe ich auch schon ohne Erfolg ausprobiert.
Es muss am AQT liegen, mit einer bat datei geht es.
Gruß
Holger
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Programme mit Parametern aus VBA aufrufen


Schritt-für-Schritt-Anleitung

Um ein externes Programm in Excel VBA zu starten und dabei Parameter zu übergeben, kannst du die Shell-Funktion verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke im Menü auf Einfügen > Modul.

  3. Füge den folgenden Code ein:

    Sub ProgrammStartenMitParameter()
       Dim pfad As String
       Dim parameter As String
    
       pfad = "C:\Programme\Advanced Query Tool\aqt.exe"
       parameter = "C:\Ordner\GetPublishesTelecom.sql"
    
       Shell Chr(34) & pfad & Chr(34) & " " & Chr(34) & parameter & Chr(34), vbNormalFocus
    End Sub
  4. Führe das Makro aus: Gehe zurück zu Excel und drücke ALT + F8, wähle ProgrammStartenMitParameter aus und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: Programm startet, aber Parameter werden nicht übergeben.

    • Stelle sicher, dass die Parameter im richtigen Format übergeben werden. Verwende Anführungszeichen um die Pfade.
  • Fehler: Das Programm wird nicht gefunden.

    • Überprüfe den Pfad zur exe-Datei. Stelle sicher, dass der Pfad korrekt ist und die Datei existiert.
  • Fehler: Shell-Funktion gibt keinen Fehler, aber das Programm startet nicht.

    • Möglicherweise benötigt das Programm Administratorrechte. Versuche, Excel als Administrator zu starten.

Alternative Methoden

Wenn die Shell-Methode nicht funktioniert, kannst du auch die ShellExecute-API verwenden:

Private 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 ExternesProgrammStarten()
    ShellExecute 0, "open", "C:\Programme\Advanced Query Tool\aqt.exe", "C:\Ordner\GetPublishesTelecom.sql", vbNullString, vbNormalFocus
End Sub

Diese Methode kann hilfreich sein, wenn du ein VBA-Tool verwendest, das spezielle Anforderungen hat.


Praktische Beispiele

  1. Ein einfaches Beispiel zum Starten von Notepad:

    Sub NotepadStarten()
       Shell "notepad.exe C:\test\test.txt", vbNormalFocus
    End Sub
  2. Starten eines Batch-Programms mit Parameter:

    Sub BatchProgrammStarten()
       Shell "C:\test\MeineBatch.bat", vbNormalFocus
    End Sub

Diese Beispiele zeigen, wie einfach es ist, ein Programm oder eine Batch-Datei direkt aus VBA zu starten.


Tipps für Profis

  • Verwende Chr(34) für Anführungszeichen, um Probleme mit Leerzeichen im Pfad zu vermeiden.
  • Teste immer zuerst im VBA-Editor: Führe Dein Makro im VBA-Editor aus, um sicherzustellen, dass alles korrekt funktioniert.
  • Fehlerbehandlung einfügen: Verwende On Error Resume Next, um unerwartete Fehler abzufangen und zu behandeln, wenn Du ein externes Programm startest.

FAQ: Häufige Fragen

1. Kann ich auch andere Dateitypen starten? Ja, die Shell-Funktion kann in der Regel auch andere Dateitypen wie .bat, .com oder .exe starten.

2. Was ist der Unterschied zwischen Shell und ShellExecute? Shell ist eine einfache Möglichkeit, Programme zu starten, während ShellExecute eine erweiterte Methode ist, die mehr Optionen und Flexibilität bietet, z.B. das Öffnen von Dokumenten mit den entsprechenden Anwendungen.

3. Funktioniert das in allen Excel-Versionen? Ja, die beschriebenen Methoden funktionieren in den meisten Versionen von Excel, solange VBA unterstützt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige