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

Forumthread: CMD Fenster aktivieren

CMD Fenster aktivieren
25.12.2019 08:00:28
Simone
Frohe Weihnachten :-)
Ich habe ein CMD Fenster (Eingabeaufforderung) geöffnet, in dem ein Programm läuft. Ich würde gerne das VBA jede Stunde das Fenster aktiviert, den Inhalt kopiert und in A1 in Tabelle1 einfügt. Geht das?
VG Simone
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CMD Fenster aktivieren
25.12.2019 08:06:12
Oberschlumpf
Hi Simone,
und für dich auch ein Frohes Fest.
Einfacher wäre...
Wenn dein CMD-Programm "sein Ergebnis" nicht nur im CMD-Fenster anzeigen würde, sondern wenn es "sein Ergebnis" in regelmäßigen Abständen in eine txt-Datei speichern könnte.
Diese txt-Datei könnte man dann mit Excel öffnen und in Zelle A1 eintragen.
Ist es möglich, das CMD-Programm so anzupassen?
Ciao
Thorsten
Anzeige
AW: CMD Fenster aktivieren
25.12.2019 08:26:20
Simone
Hallo Thorsten,
das geht leider nicht.
Ich habe versucht mit Sendkeys das Problem zu lösen, aber ich bekomme das CMD Fenster nicht aktiviert :-/
VG
AW: Application.OnTime
25.12.2019 09:22:20
Fennek
Hallo,
solange Excel läuft kann VBA mit Application.OnTime zu definierten Zeiten ein Makro aufrufen. Dieses Makro kann auch CMD-Befehle ausführen und direkt die Ergebnisse weiterverarbeiten.
SendKey sollte vermieden werden.
mfg
AW: Application.OnTime
25.12.2019 09:32:20
Oberschlumpf
Moin,
grundsätzlich haste recht...ich dachte auch in die Richtung und fragte schon, obs möglich ist, die Werte in eine txt-Datei umzuleiten...aber...
Simone hat noch nich verraten, um was für n cmd-prog es sich genau handelt?
Was is, wenns ne exe-Datei is, die irgendwelche Werte anzeigt, die in Excel rein sollen?
Ciao
Thorsten
Anzeige
AW: Application.OnTime
25.12.2019 10:32:53
Simone
Hallo zusammen,
es handelt sich um ein Auswerteprogramm, welches über mehrere Tage läuft und was in regelmäßigen Abständen erste Ergebnisse anzeigt. Daher soll VBA alle 30 Min. das geöffnete CMD-Fenster selektieren, STRG A + STRG C senden und dann in "A1" (STRG V) einfügen.
Ich weiss nur nicht, wie ich VBA beibringen soll, dass CMD-Fenster auszuwählen.
VG
Anzeige
AW: Fileappend >>
25.12.2019 11:15:38
Fennek
Hallo,
das Ergebnis des CMD Befehls kann auch in eine Datei (append) geschrieben werden: &gt &gt
Falls eine *.BAT gestartet wirde, kann dies auch mit alternativ mit "Windows Scheduled Task" gelöst werden werden. Aus VBA könnte es mit "Shell Pfad\abc.BAT" gestartet werden.
Snb zeigt diesen Ansatz:

Sub snb_xcopy()
'nur Listen der Dateinamen, kein Kopieren
sn = Split(CreateObject("wscript.shell").exec("cmd /c xcopy ""c:\temp\*.xls"" /L /S /D:04-12- _
2016").stdout.readall, vbCrLf)
For Each d In sn
Debug.Print d
Next d
End Sub
mfg
Anzeige
AW: Powershell
25.12.2019 11:18:11
Fennek
Der erste Treffer lieferte:

$sw = [Diagnostics.Stopwatch]::StartNew()
.\do_something.ps1
$sw.Stop()
$sw.Elapsed
Powershell ist "leichter" als Excel und sollte den Job auch tun können.
AW: Powershell
25.12.2019 12:12:00
Simone
Hallo,
vielen Dank für die Hilfe ... ich werde es testen.
Darüber hinaus die Frage:
Gibt es irgendein Befehl, mit dem ich das geöffnete CMD Fenster aktivieren kann?
FindWindows oder irgendetwas?
LG
Anzeige
AW: Ja, aber ...
25.12.2019 12:59:33
Fennek
Ja, es ist möglich das CMD-Fenster zu aktiivieren, aber ich bin kein API-Spezialist.
Vermutlich gibt es aber einen einfacheren Weg, vielleicht denkst Du zu kompliziert.
;
Anzeige
Anzeige

Infobox / Tutorial

CMD Fenster aktivieren in Excel


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Ein neues Modul hinzufügen: Klicke im Menü auf Einfügen und wähle Modul.
  3. Code für das Aktivieren des CMD-Fensters eingeben:

    Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" ( _
       ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    
    Declare PtrSafe Function SetForegroundWindow Lib "user32" ( _
       ByVal hwnd As Long) As Long
    
    Sub ActivateCMDWindow()
       Dim hwnd As Long
       hwnd = FindWindow(vbNullString, "Eingabeaufforderung") ' Oder den Titel deines CMD Fensters
       If hwnd <> 0 Then
           SetForegroundWindow hwnd
       Else
           MsgBox "CMD Fenster nicht gefunden!"
       End If
    End Sub
  4. Makro testen: Führe das Makro aus, um zu sehen, ob das CMD-Fenster aktiviert wird.
  5. Automatisierung mit Application.OnTime: Um das CMD-Fenster regelmäßig zu aktivieren, kannst du folgendes hinzufügen:
    Sub StartTimer()
       Application.OnTime Now + TimeValue("00:30:00"), "ActivateCMDWindow"
    End Sub

Häufige Fehler und Lösungen

  • CMD-Fenster wird nicht gefunden: Stelle sicher, dass der Titel des CMD-Fensters korrekt im FindWindow Befehl eingegeben wurde.
  • VBA lässt sich nicht ausführen: Überprüfe, ob Makros in Excel aktiviert sind (Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter).
  • Fehlermeldung bei SetForegroundWindow: Möglicherweise benötigt dein Excel Administratorrechte, um das CMD-Fenster zu aktivieren.

Alternative Methoden

  • Speichern in einer TXT-Datei: Wenn das CMD-Programm die Ausgabe in eine Textdatei umleitet, kannst du diese Datei einfach mit Excel öffnen und die Werte in Zelle A1 einfügen.
  • Powershell nutzen: Eine Alternative ist die Verwendung von Powershell, um die CMD-Funktionalitäten zu nutzen. Dies kann einfach über ein Powershell-Skript erfolgen.

Praktische Beispiele

Hier ist ein Beispiel, wie du die CMD-Ausgabe in eine TXT-Datei umleiten und dann in Excel importieren kannst:

Sub ImportFromCMD()
    Dim cmdCommand As String
    cmdCommand = "cmd /c deinBefehl >> C:\Pfad\zur\deinerDatei.txt"
    Shell cmdCommand, vbHide

    ' Warte einige Sekunden, um sicherzustellen, dass der Befehl ausgeführt wird
    Application.Wait Now + TimeValue("00:00:05")

    ' Daten aus der TXT-Datei importieren
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Pfad\zur\deinerDatei.txt", Destination:=Range("A1"))
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .Refresh
    End With
End Sub

Tipps für Profis

  • VBA optimieren: Denke daran, die Fehlerbehandlung in deinen VBA-Skripten zu implementieren, um unerwartete Fehler zu vermeiden.
  • CMD-Fenster offen lassen: Wenn du das CMD-Fenster offen lassen möchtest, stelle sicher, dass dein Programm nicht sofort schließt, nachdem der Befehl ausgeführt wurde.
  • Verwendung von Shell: Du kannst auch die Shell-Funktion verwenden, um CMD-Befehle direkt aus VBA auszuführen, was eine einfachere Methode sein kann, um Windows über CMD zu aktivieren.

FAQ: Häufige Fragen

1. Wie kann ich ein CMD Fenster automatisch aktivieren?
Mit dem oben beschriebenen VBA-Code kannst du das CMD-Fenster aktivieren, indem du den Titel des Fensters angibst.

2. Gibt es eine Möglichkeit, mehrere CMD-Fenster zu aktivieren?
Du kannst eine Schleife verwenden, um mehrere Fenster zu aktivieren, indem du die entsprechenden Titel in der FindWindow Funktion angibst.

3. Was kann ich tun, wenn mein CMD-Fenster nicht reagiert?
Überprüfe, ob das CMD-Fenster minimiert ist oder ob es im Hintergrund läuft. In einigen Fällen kann es helfen, die Anwendung als Administrator auszuführen.

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