Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA PDF verschieben
#1
Hallo Zusammen,

ich ziehe aus einen Tool verschiedene PDF Dateien.

Z.B : I5_FIBU_971_O_2613_139380_1748590_01.06.2021_GERMAN.PDF

Die Dateien fangen immer mit I5_FIBU_971_O  an. Ich würde gerne anhand der 4 Stelligen nummer danach und anhand des Monats 06.2021 die Dateien verschieben.

Mit der Formel kriege ich es zwar hin die Datei der Gruppe zuzuordnen in dem Beispiel 2613 = Ordner 1. Aber ich finde keine passenden Code um die Datei noch einen Unterordner "Juni" oder anderen Monat zuzuorden.

Kann mir hier jemand helfen bitte? :D Das übersteigt leider meine Fähigkeiten.

Sub File_verschieben()
    Dim Quelle$, Ziel$, FSO As Object
    Quelle = "C:\Test\I5_FIBU_971_O_2613*.*"
        If Dir(Quelle) = "" Then
        MsgBox "Keine Dateien vorhanden!"
    Else
        Ziel = "C:\Test\1"
        Set FSO = CreateObject("Scripting.FileSystemObject")
        FSO.MoveFile Quelle, Ziel
        Set FSO = Nothing
    End If
   
End Sub


Vielen Dank im Voraus. MFG
Antworten Top
#2
Hallo,

nachfolgend die Modifikation des Makros, mit Kommentaren:

Option Explicit

Sub File_verschieben()
    Dim Quelle$, Ziel$
    Dim Mon$, TestSub$, Datei$
    Quelle$ = "C:\Test\I5_FIBU_971_O_2613_139380_1748590_01.06.2021_GERMAN.PDF"
   
    TestSub$ = Left$(Quelle$, 26)                        'C:\Test\I5_FIBU_971_O_2613
   
    If Dir(TestSub$ & "*.PDF") = "" Then
      MsgBox "Keine Dateien vorhanden!"
    Else
      Mon$ = MonthName(Split(Quelle$, ".")(1))          'Juni
      Ziel = "C:\Test\1\" & Mon$ & "\"                  'C:\Test\1\Juni\
      Datei$ = Mid$(Quelle$, InStrRev(Quelle$, "\") + 1) 'I5_FIBU_971_O_2613_139380_1748590_01.06.2021_GERMAN.PDF
      Ziel$ = Ziel$ & Datei$                            'C:\Test\1\Juni\I5_FIBU_971_O_2613_139380_1748590_01.06.2021_GERMAN.PDF
     
      'Verschieben der Datei "I5_FIBU_971_O_2613_139380_1748590_01.06.2021_GERMAN.PDF"
      'vom Verzeichnis "C:\Test\"
      'ins Verzeichnis "C:\Test\1\Juni\"
      'Diese (Unter)Verzeichnisse müssen bereits existieren.
      Name Quelle$ As Ziel$
    End If
 
End Sub
Mit lieben Grüßen
Anton.

Windows 10 64bit
Office365 32bit
Antworten Top
#3
Hallo,

schon mal vielen Dank für die Mühe.

Allerdings müsste ich dann jedes PDF da eingeben ?! Seh ich das richtig ?

Nochmal zur Info: Die 4 Stellige Zahl stellt die Kostenstelle da und die Zahl danach die Kundennummer und dann die Belegnummer. Ich müsste quasi nur nach Kostenstelle und Monat Filtern können.
Gibt es dafür eine Möglichkeit?

I5_FIBU_971_O_2546_130923_1748575_01.06.2021_GERMAN.PDF
I5_FIBU_971_O_2613_139380_1748590_01.06.2021_GERMAN.PDF
I5_FIBU_971_O_2613_139380_1748591_01.06.2021_GERMAN.PDF

Schon mal vielen Dank.

MFG
Antworten Top
#4
Hallöchen,

eine Zeichenkette kann man auch aus verschiedenen Bestandteilen, z.B. feste Texte, variabel, Zellinhalte, zusammensetzen. Damit kann man dann Schleifen verwenden.

z.B. mal für die 4-stellige Nummer

For iNummer = 1 to 9999
Quelle = "C:\Test\I5_FIBU_971_O_" & iNummer & "*.*"
'mach was mit der Quelle
Next

Du kannst da auch Schleifen ineinander packen und verschiedene Variablen nutzen

Code:
For iNummer = 1 to 9999
  For iMonat = 1 to 12
    Quelle = "C:\Test\I5_FIBU_971_O_" & iNummer & "_" & iMonat & "2021*.*"
    'mach was mit der Quelle
  Next
Next

Wenn die Zahl immer 4stellig und der Monat immer zweistellig - mit vorangestellten Nullen - sein soll, kann man das ber FORMAT erreichen, z.B.

Quelle = "C:\Test\I5_FIBU_971_O_" & Format(iNummer, "0000") & "*.*"
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


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