Mai 19, 2022, 17:32:06

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


cmd per VBA ausführen

Begonnen von Lalikowski, April 09, 2022, 07:00:27

⏪ vorheriges - nächstes ⏩

Lalikowski

April 09, 2022, 07:00:27 Letzte Bearbeitung: April 09, 2022, 07:08:01 von Lalikowski
Hallo zusammen,

ich möchte gerne, dass beim öffnen eines Formulars, eine Datei umbenannt wird.

Habe mal was versucht, aber ohne Erfolg...:-(

Private Sub Form_Load()

Dim file As String
Dim rename As String

file = "Y:\home\andreas\Dokumente\FS24\Arbeitszeiten\Stempeluhr*"
rename = "cmd.exe /c rename "Y:\home\andreas\Dokumente\FS24\Arbeitszeiten\FS24.csv""

End Sub

Hat jemand einen Rat?....


Lalikowski

...vielen Dank und ein entspanntes WE

Lalikowski

...ups, nun leider unerwartet ein Problem....-(


PhilS

Zitat von: Lalikowski am April 09, 2022, 09:51:32...ups, nun leider unerwartet ein Problem....-(
Unerwartet? - Nun ja.
Du übergibst als Ursprungsdatei (oldName) nicht einen konkreten Dateinamen, sondern ein Muster, dem keine, eine, oder X Millionen Dateien entsprechen können. - Dementsprechend weit gefächert sollte da auch die Erwartung des Ergebnisses sein.

Übergib stattdessen den Namen einer konkreten Datei, dann sollte es funktionieren.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Lalikowski

Moin PhilS,

aber genau das kann ich nicht, weil bei dieser Datei immer nur der Anfang "StempelUhr" gleich ist....

Die Datei wird aus einer App generiert, bei ich keine Möglichkeit habe, diese anzupassen.

Gibt es dennoch eine Möglichkeit, wie das Problem gelöst werden kann?

PhilS

Zitat von: Lalikowski am April 09, 2022, 11:03:03aber genau das kann ich nicht, weil bei dieser Datei immer nur der Anfang "StempelUhr" gleich ist....
Dann musst du im VBA-Code selbst erstmal ermitteln, wie der Dateiname genau lautet und danach mit diesem konkreten Namen das Umbenennen durchführen.

Die VBA-Dir-Funktion liefert dir für so ein Muster, wie du es verwendest, der Reihe nach alle passenden Dateinamen zurück.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Lalikowski

...sorry, aber ich bekomme das einfach nicht hin..... :P  :P
Ich weiß mir einfach nicht mehr zu helfen..

Private Sub Form_Load()

Dim strPfad As String
Dim strOldFile As String
Dim strNewFile As String

   
    strPfad = "Y:\FS24\Arbeitszeiten\"
    strOldFile = Dir(strPfad)
    strNewFile = "Y:\FS24\Arbeitszeiten\FS24.csv"
   
Name strOldFile As strNewFile

Kill strOldFile

End Sub

In Y:\FS24\Arbeitszeiten\ befindet sich nur die Datei "StempelUhr*.csv". Diese muss umbenannt "FS24.csv" werden.
Im Anschluss muss die Datei "StempelUhr*.csv" gelöscht werden.

Kann mir bitte jemand den entsprechenden code schreiben?....

Vielen Dank schon mal....

PhilS

Zitat von: Lalikowski am April 09, 2022, 15:02:43In Y:\FS24\Arbeitszeiten\ befindet sich nur die Datei "StempelUhr*.csv". Diese muss umbenannt "FS24.csv" werden.

Diese Feststellung müsstest du nur in den Code übernehmen, wie ich bzgl. der Dir-Funktion ja vorgeschlagen hatte.
Wenn es sicher nur eine einzige Datei StempelUhr*.csv in dem Verzeichnis gibt, musst du deinen Code nur anpassen wie folgt:

    strPfad = "Y:\FS24\Arbeitszeiten\StempelUhr*.csv"
    strOldFile = Dir(strPfad)

Wenn es mehrere Dateien geben kann, wird es komplizierter. Du müsstest dann im Anschluss die Dir-Funktion ohne Argument aufrufen, um die übrigen Dateinamen zu bekommen, die dem Muster entsprechen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Lalikowski

...bekomme immer wieder diese Fehlermeldung, siehe Anhang...


MzKlMu

Hallo,
lasse Dir mit Debug.Print mal den Wert von strOldFile ausgeben.

Und bitte, bitte keinen Code als Bild hier zeigen, sondern nur als Text in Codetags.
Von Bildern kann man nichts kopieren und zum Abschreiben hat keiner Lust.
Gruß
Klaus

Lalikowski

...da wird nichts ausgegeben. Vielleicht liegt es aber auch an mir..:(

Private Sub Form_Load()

Dim strPfad As String
Dim strOldFile As String
Dim strNewFile As String

   
    strPfad = "Y:\FS24\Arbeitszeiten\StempelUhr*.csv"
    strOldFile = Dir(strPfad)
    strNewFile = "Y:\FS24\Arbeitszeiten\FS24.csv"
   
Debug.Print strOldFile
   
Name strOldFile As strNewFile

Kill strOldFile

End Sub

PhilS

Zitat von: Lalikowski am April 09, 2022, 16:18:46...da wird nichts ausgegeben. Vielleicht liegt es aber auch an mir..:(

    strPfad = "Y:\FS24\Arbeitszeiten\StempelUhr*.csv"
    strOldFile = Dir(strPfad)
Da habe ich nicht aufgepasst und einen Fehler eingebaut. Dir gibt nur den reinen Dateinamen, ohne den Pfad zurück.

Richtig muss es heißen:
    strPfad = "Y:\FS24\Arbeitszeiten\StempelUhr*.csv"
    strOldFile = "Y:\FS24\Arbeitszeiten\" & Dir(strPfad)

Es wäre allerdings auch nicht besonders schwer gewesen, dieses Problem selbst zu erkennen und zu beheben.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Lalikowski

...läuft wie gewünscht, ganz vielen Dank...