Office: VBA - shell-Befehl senden

Helfe beim Thema VBA - shell-Befehl senden in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo alle miteinander! :) Ich habe irgendwie ein Problem mit der shell-funktion.. Ich möchte, dass wenn ich auf einen Button klicke, ein Befehl an... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von marcel87, 24. Februar 2009.

  1. marcel87 Erfahrener User

    VBA - shell-Befehl senden


    Hallo alle miteinander! :)

    Ich habe irgendwie ein Problem mit der shell-funktion..
    Ich möchte, dass wenn ich auf einen Button klicke, ein Befehl an die Eingabeaufforderung gesendet wird. Dieser Befehl setzt sich bei mir aus 2 Teilen zusammen, einmal dem Dateipfad und einmal einem Ordnernamen hinten angehängt.

    Hier einmal mein Code:

    Code:
    Sub send_command()
    
    Dim myshell
    Dim strItems As String
    Dim command As String
    Dim command2 As String
    
    command = "rd C:\Beispiele\Test_rd_ordner\"
    
    strItems = Dir("C:\Beispiele\Test_rd_ordner\*", vbDirectory)
    
    Do While strItems <> ""  ' Wiederholen bis strItems=""
    
        If strItems <> "." And strItems <> ".." Then
        command2 = command & strItems
        
        myshell = shell(command2, 1)
        
        End If
        
        strItems = Dir ' Aufruf der Funktion ohne Parameter!!
        
    Loop    
    
    End Sub
    

    Folgendes weiß ich schon:
    strItems beinhaltet wie erhofft bei jedem durchlauf einen Datei- oder Ordnernamen aus dem angegebenen Pfad.

    Die werte "." und ".." werden wie erhofft ignoriert.

    Gebe ich für myshell = shell("ping mein_computer_name") ein, so wird die shell mit dem Ping-Befehl so oft gehöffnet, wie ich es erhoffe(also genau so oft wie Ordner und Dateien vorhanden sind).

    Gebe ich command2 in einer MsgBox aus, so beinhaltet diese wie erhofft "C:\Beispiele\Test_rd_ordner\ORDNERNAME" .

    Doch der von mir gepostete Code meckert an der Stelle 'myshell = ...' und sagt mir "Datei nicht gefunden", obwohl der Befehl, welcher in command2 steht, funktioniert, wenn man ihn manuell in die Eingabeaufforderung eingibt...

    Ich bin überfragt, weiß jemand wie ich meinen zusammengepuzzelten Befehl ans laufen bekomme?

    MfG
    Marcel
     
    marcel87, 24. Februar 2009
    #1
  2. marcel87 Erfahrener User
    Edit:
    Mir ist gerade folgendes aufgefallen:
    Öffnet man so in Windows die Eingabeaufforderung steht dort ja:

    öffne ich diese über VBA per shell-Befehl so ist diese zu begin komplett leer!
    Leider schließt sich bei mir das Fenster sofort nach dem Ausführen des Befehls wieder, aber man kann es beim Pingen deutlich sehen, da es ja einige sekunden braucht...
    Könnte es damit zusammenhängen?
    Wenn ja, kennt jemand einen Befehl um die "Standartausgabe" bzw. -einstellung zu erzwingen?

    MfG :)
     
    marcel87, 24. Februar 2009
    #2
  3. miriki Erfahrener User
    Hehe, yup... Aber suche mal nach der Datei rd.bat, rd.com, rd.exe usw. ;-)

    Der Befehl "rd" (auch "rmdir") ist ein Befehl, der zum "internen" Befehlssatz des Kommando-Interpreters (früher unter DOS "command.com", jetzt eher sowas wie "cmd.exe" oder so ähnlich) gehört.

    Versuch den Aufruf solcher Befehle mal mit etwas in der Art:
    Code:
    c:\windows\system32\cmd.exe /c rd c:\blablubb
    Und da Du ja nicht absolut sicher weißt, wer mit welcher Shell arbeitet, solltest Du am besten auch noch die Variable "ComSpec" in den Aufruf mit einbauen.

    Weiteres findest Du in einem DOS-Fenster auch mit "cmd /?" und "set".

    Gruß, Michael
     
  4. marcel87 Erfahrener User

    VBA - shell-Befehl senden

    Guten Morgen! :)

    Danke erstmal für die Antwort =)
    Das klappt soweit auch mit dem Befehl

    Code:
    "c:\windows\system32\cmd.exe /c rd C:\Beispiele\Test_rd_ordner\" & strItems
    Doch leider gibts da ein kleines Problem.. habe ein wenig rumprobiert, neue Ordner erstellt und löschen lassen.. doch es klappte nicht bei allen :cry:
    Nach weiterem rumprobieren ist mir aufgefallen, dass alle Ordner, die ein Leerzeichen in der Bezeichnung haben, einfach ignoriert werden...
    Hänge ich vor das "myshell = ..." eine MsgBox mit den strItems, so werden alle Ordner angezeigt, womit ich ausschließe, dass die if-Anweisung richtig funktioniert...

    Hat jemand dazu einen Anhaltspunkt?

    MfG :-)
     
    marcel87, 25. Februar 2009
    #4
  5. miriki Erfahrener User
    Hm, nicht ganz... Sie werden nicht ignoriert, sondern der rd läuft einfach nur ins Leere.

    Das kannst Du relativ leicht selbst nachvollziehen. Öffne mal ein DOS-Fenster und gib dort ein:

    Code:
    ...>c:
    ...>cd \
    C:\>md test
    C:\>cd test
    C:\test>md blablubb
    C:\test>md bla blubb
    C:\test>dir
    Das Ergebnis des dir ist ein anderes, als man zunächst erwarten würde. Es sollten eigentlich 2 Verzeichnisse namens "blablubb" und "bla blubb" auftauchen. Stattdessen sind es aber 3, und zwar "blablubb", "bla" und "blubb". Also hat der 2. md Befehl irgendwie 2 Verzeichnisse erstellt. Abhilfe:
    Code:
    C:\test>md "bla blubb"
    C:\test>dir
    Und schwupps, schon ist das erwartete Ergebnis da. Und jetzt rückwärts:
    Code:
    C:\test>rd bla blubb
    C:\test>dir
    Oh weiha, der eine Befehl hat gleich 2 Verzeichnisse gelöscht, aber nicht das, was wir eigentlich wollten. Also auch hier:
    Code:
    C:\test>rd "bla blubb"
    C:\test>dir
    Und schon ist die Welt wieder in Ordnung.

    Gruß, Michael
     
  6. marcel87 Erfahrener User
    Wunderschick =)

    mit
    Code:
    myshell = shell("c:\windows\system32\cmd.exe /k rd ""C:\Beispiele\Test_rd_ordner\" & strItems & """", 1)
    erwirscht er alle wie gewollt :-o

    schankedööön :mrgreen:
     
    marcel87, 25. Februar 2009
    #6
Thema:

VBA - shell-Befehl senden

Die Seite wird geladen...
  1. VBA - shell-Befehl senden - Similar Threads - VBA shell Befehl

  2. VBA in einer Zeile zu lang

    in Microsoft Excel Hilfe
    VBA in einer Zeile zu lang: Moin, mein VBA Code ist für eine Zeile zu lang. Kann mir einer helfen wie ich den auf 2 Zeilen aufteilen Kann? arrSchuhDaten = Array(Range("A6"), Range("F6"), Range("J6"), Range("A7"),...
  3. Listbox wird nicht breiter, Schriftgrösse ändert sich

    in Microsoft Excel Hilfe
    Listbox wird nicht breiter, Schriftgrösse ändert sich: Hallo, ich habe ein Formular dessen Breite ich mit der Maus ändern kann. Im Formular habe ich einen Rahmen und darin eine Listbox deren Breite an die Formularbreite angepasst wird....
  4. Kontrollkästchen aktivieren ohne VBA - wenn KK1 angekreuzt dann KK2 auch

    in Microsoft Excel Hilfe
    Kontrollkästchen aktivieren ohne VBA - wenn KK1 angekreuzt dann KK2 auch: Hallo zusammen, erstmal danke für all die Tipps und Kniffe, die ich ohne eigenen Thread gefunden und gelernt habe. Leider finde ich mein Thema nirgendwo... Aktuell habe ich zwei Spalten mit...
  5. Per Hyperlink ausgeblendetes Blatt einblenden

    in Microsoft Excel Hilfe
    Per Hyperlink ausgeblendetes Blatt einblenden: Hola ins Forum, ich bräuchte mal wieder eure Hilfe. Ich habe ein Tabellenblatt das mir als Register dient und wo Hyperlinks eingefügt sind um auf das dazugehörige Blatt zu springen. Diese Blätter...
  6. Bilder über VBA Größe und DPI ändern für Webshop

    in Microsoft Excel Hilfe
    Bilder über VBA Größe und DPI ändern für Webshop: Hallo Excel Spezialisten, Ich habe mir eine recht aufwendige Tabelle gebastelt, aus der ich Daten für meinen Webshop generiere und in einer .csv bereitstelle. Es werden neue Preislisten...
  7. VBA: Platzhalter ersetzen und evtl. leere Zeile einfügen

    in Microsoft Word Hilfe
    VBA: Platzhalter ersetzen und evtl. leere Zeile einfügen: Hallo zusammen, ich habe eine Word-Vorlage mit Platzhaltern, in die ich mit VBA Daten aus einer Excel-Datei einfüge (in eine Excel-Zeile schreibe ich alle Daten für ein neues Word-Dokument). So...
  8. Erstellung eines Dynamischen Kalenders (ggf. VBA)

    in Microsoft Word Hilfe
    Erstellung eines Dynamischen Kalenders (ggf. VBA): Guten Morgen an Alle, ich hoffe, es geht euch soweit gut :) Ich wende mich heute an euch, weil ich gerade vollkommen verzweifle und irgendwie so ganz und garnicht weiterkomme und irgendwie...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden