Excel VBA Buttton CMD-Befehl
#1
Hallo,

ich würde gerne in meinem Excel-Dokumente eine Button einfügen, welcher mir eine CMD-Befehl mit dem Inhalt der Zeile A5 ausführt.
In der Zeile A5 steht =A1&A2&A3&A4

Zusammen gesetzt bedeutet es: echo Text1 Text2 >>test.txt

Viele Grüße
Thomas
Antworten Top
#2
Hallo, 19 

mit folgendem CMD-Befehl werden alle CSV-Dateien eines Verzeidchnisses in eine CSV-Datei zusammengeführt: 21 

Code:
Option Explicit
Public Sub Main()
    Dim dblTMP As Double
    dblTMP = Shell("cmd /c type E:\Alte_HDD\TEMP\*.csv >> C:\Temp\AlleCSV.csv")
End Sub

Du musst das jetzt nur noch in die richtige Syntax bringen - je nachdem, was in den einzelnen Zellen bei dir steht.
Antworten Top
#3
Hallo,

eigentlich möchte ich keine Dateien zusammenfügen, sondern die Zeile A5 an CMD übergeben/ausführen.
Das mit Shell("cmd habe ich schon gelesen, aber wie gebe ich die A5 dem Befehl mit.

Da ich keine andere Möglichkeit kenne, habe habe ich mir meinen Link in einer Zeile zusammen gesetzt.
Bisher kopiere ich mir immer die A5 aus Excel und füge die Zeile ins CMD ein.
Mit eine Button würde das dann automatisch und einfacher gehen.

A1=echo
A2=Text1
A3=Text2
A4=>>c:\test.txt

In der Zeile A5 steht =A1&A2&A3&A4
Die Zeile A5 sieht dann so aus: echo Text1 Text2 >>test.txt

Gruß Thomas
Antworten Top
#4
Hallo, 19 

folgende Vorraussetzungen: 21 
  • A1 = echo
  • A2 = Text1
  • A3 = Text2
  • A4 = >>C:\Temp\Text1_2.txt
  • A5 = =TEXTVERKETTEN(" ";WAHR;A1:A4)
Dann geht (getestet):

Code:
Option Explicit
Public Sub Main()
    Dim dblTMP As Double
    dblTMP = Shell("cmd /c " & [A5])
End Sub
Antworten Top
#5
Hallo,

der Code funktioniert soweit, nur muss ich die Befehlsschaltfläche immer mehrmals klicken, bis er
es wirklich in die Datei schreibt.  Beim ersten klick passiert nichts, er markierte mir eine Zelle
in der Tabelle und erst nach einem weiteren Klick klappt es.

Vielleicht sollte er direkt in eine Datei schreiben und nicht über meine Bastelformel mit Echo Smile
Das war eben die billige Lösung, wenn man sich mit VBA nicht auskennt Sad

So hätte ich es im Kopf Smile

1. Überprüfe ob Datei vorhanden
2. Wenn ja, Zeile A2,A3 anfügen
3. Wenn nein, erstelle test.txt
4. Meldung Alles ok
3. Fertig

Gruß Thomas
Antworten Top
#6
Hallo, 19 

dann so: 21 

Code:
Option Explicit
Public Sub Main()
    Open "C:\Temp\Alles.txt" For Append As #1 ' Anpassen!!!
    With ThisWorkbook.Worksheets("Tabelle2") ' Anpassen!!!
        Print #1, Join(WorksheetFunction.Transpose(.Range("A3:A4").Value), " ")
    End With
    Close #1
End Sub
Antworten Top
#7
Hallo,

SUPER!!!
Vielen Dank es funktioniert Smile

Ich habe noch eine blöde Frage, wird die Datei wenn Sie existiert in Excel (Speicher) geladen und dann A3:A4 dazu geschrieben?
Das würde bedeuten, wenn ich mit einem zweiten PC im selben Moment die Datei schreibe, ich die vorhandenen Daten überschreibe?
Weil ich habe doch in diesem Moment eigentlich nicht den aktuellen Stand?
Wie das der Echo-Befehl macht kann ich nicht sagen...

Gruß Thomas
Antworten Top
#8
Hallo, 19 

schau dir in dem Zusammenhang mal folgendes (insbesondere die Parameter - auch die optionalen) an: 21

Open-Anweisung...
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste