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
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
$sw = [Diagnostics.Stopwatch]::StartNew()
.\do_something.ps1
$sw.Stop()
$sw.Elapsed
Powershell ist "leichter" als Excel und sollte den Job auch tun können.ALT + F11
, um den VBA-Editor in Excel zu öffnen.Einfügen
und wähle Modul
.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
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
FindWindow
Befehl eingegeben wurde.SetForegroundWindow
: Möglicherweise benötigt dein Excel Administratorrechte, um das CMD-Fenster zu aktivieren.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
Shell
-Funktion verwenden, um CMD-Befehle direkt aus VBA auszuführen, was eine einfachere Methode sein kann, um Windows über CMD zu aktivieren.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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen