Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

PDF Dateien in Ordner kopieren

Forumthread: PDF Dateien in Ordner kopieren

PDF Dateien in Ordner kopieren
18.11.2024 12:34:13
walter k
Guten Morgen,
ich habe doch noch einmal die Frage zum verschieben der der PDF Dateien.
Die PDF sollen in den Ordner "PDF" verschoben werden, siehe Bild.
Userbild

Wobei das Verzeichnis unterschiedlich sein kann aber der geöffnete Ordner mit dem Namen "PDF" ist immer gleich.
Also sollte es immer der Explorer sein der aktiv geöffnet ist.

Würde mich freuen, wenn jemand helfen kann.

mfg walter k
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PDF Dateien in Ordner kopieren
18.11.2024 12:55:10
Yal
Hallo Walter,

ich würde diese Aufgabe nicht unbedingt mit VBA lösen. Es ist das denkbar ungeeigneste Werkzeug dafür.

Zwei Alternative:
  • im Explorer mit Strg+a alle Dateien markieren, dann in einem Wisch alles ins Unterordner PDF verschieben. (Alternativ: nach Strg+a, Rechtsklick, "ausschneiden", ins PDF-Ordner navigieren, Rechtklick, "einfügen". Geht auch mit Strg+x, navigieren, Strg+v)

  • im Explorer auf dem Ordner-Struktur links den Ordner zusammen mit Shift-Taste rechtsklicken und "in Terminal öffnen" (Win11), dann in dieser schwarze Fenster

  • move *.pdf .\pdf\
    eintippen und Enter.

    VG
    Yal
    Anzeige
    AW: PDF Dateien in Ordner kopieren
    18.11.2024 14:05:00
    walter k
    Hallo Yal,
    danke für die Info. Für mich wäre das Händige kein Problem aber nicht für die beiden "älteren" Damen,
    deshalb würde ich gern die Automatitation bevorzugen.
     With dlgAuswahl
    
    .Filters.Clear
    .Filters.Add "Excel Dateien", "*.pdf"
    .InitialFileName = Verzeichnis
    .Show
    End With

    und jetzt in den Ordner !

    mfg walter k
    Anzeige
    AW: PDF Dateien in Ordner kopieren
    18.11.2024 15:11:22
    Yal
    Hallo Walter,

    Achtung: nicht vergessen, die Bibliothek einzubinden.

    Sub Test()
    
    'Unter Anbindung (in VB-Editor, "Extras", "Verweise..", Bibliothek anhaken) von:
    'Microsoft Scripting Runtime
    Dim dlgAuswahl As FileDialog
    Dim FSO As New FileSystemObject
    Dim Verz As Folder
    Dim D


    Set Verz = FSO.GetFolder("\\Sekr\D\__Rechnungen\_Geschäftsstelle_Kappler\_Kappler_gedruckte_Rechnungen\" _
    & Range("Q1").Value & "\" _
    & Format(Range("R1").Value, "00 ") _
    & MonthName(Range("R1").Value))

    Set dlgAuswahl = Application.FileDialog(msoFileDialogFilePicker)
    With dlgAuswahl
    .Filters.Clear
    .Filters.Add "Excel Dateien", "*.pdf"
    .InitialFileName = Verz.Path
    .AllowMultiSelect = True 'erlaubt mehrere Dateien zu markieren / auswählen
    If .Show > False Then
    For Each D In .SelectedItems
    FSO.MoveFile Verz.Path & "\" & D, Verz.Path & "\PDF\"
    Next
    End If
    End With
    End Sub


    VG
    Yal
    Anzeige
    kleiner Fehler
    18.11.2024 16:46:23
    walter k
    Hallo Yal,
    erst mal DANKE für deine schnelle VBA Hilfe !
    Leider bleibt er
    hier stehen:
       .InitialFileName = Verz.Path

    Lauftzeitfehler 91
    Objektvariable oder With-Blockvariable nicht festgelegt.

    mfg walter k
    Anbei Muster
    18.11.2024 17:25:21
    walter k
    Hallo Yal,
    soweit ohne Fehler aber Selectiert nicht und setzt auch nicht ins Verzeichnis in alle PDF.

    Set Verz = FSO.GetFolder("\\Sekr\D\__Rechnungen\_Geschäftsstelle_Kappler\_Kappler_gedruckte_Rechnungen\" _
    
    & ActiveSheet.Range("Q1").Value & "\" _
    & Format(Range("R1").Value, "00 ") _
    & MonthName(Range("R1").Value))


    With dlgAuswahl
    
    .Filters.Clear
    .Filters.Add "Excel Dateien", "*.pdf"
    .InitialFileName = Verz.Path
    .AllowMultiSelect = True 'erlaubt mehrere Dateien zu markieren / auswählen
    If .Show > False Then
    For Each D In .SelectedItems
    FSO.MoveFile Verz.Path & "\" & D, Verz.Path & "\PDF\"
    Next
    End If
    End With

    End If


    gruß walter k
    Anzeige
    AW: Anbei Muster
    18.11.2024 17:42:27
    Yal
    Hallo Walter,

    poste bitte nur vollständige Code von "Sub ..." bis "End Sub". Hier ist kein Puzzle-Forum.

    Neue Version.
    Sub Test()
    
    'Unter Anbindung (in VB-Editor, "Extras", "Verweise..", Bibliothek anhaken) von:
    'Microsoft Scripting Runtime
    Dim dlgAuswahl As FileDialog
    Dim FSO As New FileSystemObject
    Dim Verzeichnis As String
    Dim D


    Verzeichnis = "\\Sekr\D\__Rechnungen\_Geschäftsstelle_Kappler\_Kappler_gedruckte_Rechnungen\" _
    & Range("Q1").Value & "\" _
    & Format(Range("R1").Value, "00 ") _
    & MonthName(Range("R1").Value)

    If FSO.gelfolder(Verzeichnis) Is Nothing Then
    MsgBox "Der Verzeichnis" & vbCr & """" & Verzeichnis & """" & vbCr & "scheint nicht zu existieren.", "Bitte prüfen"
    Else
    Set dlgAuswahl = Application.FileDialog(msoFileDialogFilePicker)
    With dlgAuswahl
    .Filters.Clear
    .Filters.Add "Excel Dateien", "*.pdf"
    .InitialFileName = Verzeichnis
    .AllowMultiSelect = True 'erlaubt mehrere Dateien zu markieren / auswählen
    If .Show > False Then
    For Each D In .SelectedItems
    FSO.MoveFile Verzeichnis & "\" & D, Verzeichnis & "\PDF\"
    Next
    End If
    End With
    End If
    End Sub


    Lass den Code im Schritt-Modus laufen (Taste F8) und behalte dabei das Lokalfenster offen (Ansicht, Lokalfenster)

    VG
    Yal
    Anzeige
    Nicht "gelfolder" sondern "GetFolder". owT
    18.11.2024 17:43:07
    Yal
    Hier kompl. Muster
    18.11.2024 19:06:51
    walter k
    Hallo Yal,
    wie gewünscht:

    Public Sub PDF_Rechnung_suchen_Du_Duss()
    
    Dim dlgAuswahl As FileDialog
    Dim AppWD As Object
    Dim strDatei, lstrExt() As String
    Dim Verzeichnis

    Set dlgAuswahl = Application.FileDialog(msoFileDialogFilePicker)

    '--------------------------------------
    Dim FSO As New FileSystemObject
    Dim Verz As Folder
    Dim D, C
    '--------------------------------------
    Verzeichnis = "D:\Sekr\__Rechnungen\_Geschäftsstelle_Kappler\_Kappler_gedruckte_Rechnungen\" _
    & Range("Q1").Value & "\" _
    & Format(Range("R1").Value, "00 ") _
    & MonthName(Range("R1").Value)

    If FSO.GetFolder(Verzeichnis) Is Nothing Then
    MsgBox "Der Verzeichnis" & vbCr & """" & Verzeichnis & """" & vbCr & "scheint nicht zu existieren.", "Bitte prüfen"
    Else
    Set dlgAuswahl = Application.FileDialog(msoFileDialogFilePicker)
    With dlgAuswahl
    .Filters.Clear
    .Filters.Add "Excel Dateien", "*.pdf"
    .InitialFileName = Verzeichnis
    .AllowMultiSelect = True 'erlaubt mehrere Dateien zu markieren / auswählen
    If .Show > False Then
    For Each D In .SelectedItems
    FSO.MoveFile Verzeichnis & "\" & D, Verzeichnis & "\PDF\"
    Next
    End If
    End With
    End If
    End If
    End Sub

    es werden die PDF angezeigt aber nicht in den Ordner "PDF" geschoben.

    mfg walter k
    Anzeige
    Kleiner Hinweis
    18.11.2024 19:16:59
    walter k
    Hallo Yal,

    hier werden die PDF's im Explorer angezeigt:
    If .Show > True Then
    
    For Each C In .SelectedItems
    Stop
    FSO.MoveFile Verzeichnis & "\" & C, Verzeichnis & "\PDF\"
    Next
    End If


    mfg walter k
    Anzeige
    AW: Kleiner Hinweis
    18.11.2024 20:25:05
    Yal
    Hallo Walter,

    es ist gut, einige Ergebnisse in Variable zu lagern, um diese im Lokalfenster/Schrittmodus beobachten zu können. Wenn Du den Code aber postest, solltest Du diese wieder rausnehmen.
    Der letzte von Dir gepostete Code kann nicht funktionieren. Es gibt einen "End If" zu viel.

    Neue Version. Vollständig. Ich vermute, dass der Fehler in dem Zielpfad zu suchen ist. Die vorhandenen PDF werden immer in einem Unterverzeichnis, das PDF heisst.
    Die "D" aus den .SelectedItems beinhalten den ganzen Pfad. Daher muss man davon den ParentFolder extrahieren.

    Sub PDF_Rechnung_suchen_Du_Duss()
    
    'Unter Anbindung (in VB-Editor, "Extras", "Verweise..", Bibliothek anhaken) von:
    'Microsoft Scripting Runtime
    Dim FSO As New FileSystemObject
    Dim Verzeichnis As String
    Dim D

    Verzeichnis = "\\Sekr\D\__Rechnungen\_Geschäftsstelle_Kappler\_Kappler_gedruckte_Rechnungen\" _
    & Range("Q1").Value & "\" _
    & Format(Range("R1").Value, "00 ") _
    & MonthName(Range("R1").Value)

    If FSO.GetFolder(Verzeichnis) Is Nothing Then
    MsgBox "Der Verzeichnis" & vbCr & """" & Verzeichnis & """" & vbCr & "scheint nicht zu existieren.", "Bitte prüfen"
    Else
    With Application.FileDialog(msoFileDialogFilePicker)
    .Filters.Clear
    .Filters.Add "Excel Dateien", "*.pdf"
    .InitialFileName = Verzeichnis
    .AllowMultiSelect = True 'erlaubt mehrere Dateien zu markieren / auswählen
    If .Show > False Then
    For Each D In .SelectedItems
    FSO.MoveFile D, FSO.GetFile(D).ParentFolder & "\PDF\"
    Next
    End If
    End With
    End If
    End Sub
    Anzeige
    AW: Kleiner Hinweis
    18.11.2024 21:05:11
    walter k
    Guten Abend Yal,
    habe deinen neuen Code bzw. das Makro übernommen.
    Es wird der Explorer mit dem richtigen Verzeichnis mit allen PDF's und den Ordner "PDF" angezeigt.

    Es ist mir schon peinlich das ich DICH so lange damit belästige.
    Aus meiner Sicht müßte jetzt der geöffnete Explorer zumindest mit den kompl.slectierten PDF's
    sichtbar sein, um dann in einem Schlag alle PDF's in den Ordner "PDF" zu schieben.

    mfg
    walter k
    Anzeige
    AW: Kleiner Hinweis
    19.11.2024 14:37:17
    Yal
    Hallo Walter,

    dann nicht den FilePicker-Dialog sondern FolderPicker Dialog.

    Sub PDF_Rechnung_suchen_Du_Duss()
    
    'Unter Anbindung (in VB-Editor, "Extras", "Verweise..", Bibliothek anhaken) von:
    'Microsoft Scripting Runtime
    Dim FSO As New FileSystemObject
    Dim Verzeichnis As String
    Dim D

    Verzeichnis = "\\Sekr\D\__Rechnungen\_Geschäftsstelle_Kappler\_Kappler_gedruckte_Rechnungen\" _
    & Range("Q1").Value & "\" _
    & Format(Range("R1").Value, "00 ") _
    & MonthName(Range("R1").Value)

    If FSO.GetFolder(Verzeichnis) Is Nothing Then
    MsgBox "Der Verzeichnis" & vbCr & """" & Verzeichnis & """" & vbCr & "scheint nicht zu existieren.", "Bitte prüfen"
    Else
    With Application.FileDialog(msoFileDialogFolderPicker)
    .Filters.Clear
    .Filters.Add "Excel Dateien", "*.pdf"
    .InitialFileName = Verzeichnis
    .AllowMultiSelect = True 'erlaubt mehrere Dateien zu markieren / auswählen
    If .Show > False Then
    For Each D In .SelectedItems
    Shell ("cmd /c move """ & D & "\*.pdf"" """ & FSO.GetFile(D).ParentFolder & "\PDF\""")
    Next
    End If
    End With
    End If
    End Sub

    Es kann weiterhin mehreren Verzeichnisse gewählt werden. In jedem einzelne werden die PDF-Dateien in den jeweilige PDF-Unterordner geschoben.

    Nicht getestet. Für das Debugging bitte selber die Armel hochkrempeln.

    VG
    Yal
    Anzeige
    Ärmel hoch, da ist mein Wissen...
    19.11.2024 15:09:27
    walter k
    Hallo Yal,
    wiederholt Danke.
    Leider Fehlermeldung:
    Laufzeitfehler 438
    Object unterstützt die Eigenschaft oder Methode nicht !

    Bleibt hier stehen:
    .Filters.Add "Excel Dateien", "*.pdf"

    mfg walter k
    Zeile einfach weglassen. Bezieht sich nur auf Dateien. owT
    19.11.2024 16:09:39
    Yal
    Yal Dank dir nochmals --))
    19.11.2024 18:40:20
    walter k
    Anzeige

    Forumthreads zu verwandten Themen

    Anzeige