Anzeige
Archiv - Navigation
1700to1704
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

pdf sortieren und Ordner erstellen via VBA Button

pdf sortieren und Ordner erstellen via VBA Button
16.07.2019 02:27:17
Tom
Hallo zusammen,
ich moechte ein Makro erstellen, um einen Ordner mit mehreren pdf-Dateien zu sortieren und Unterordner zu erstellen.
Es gehoeren immer 3 pdf-Dateien zusammen und sind wie folgt benannt:
X-12345678910.pdf
Y-12345678910.pdf
Z-12345678910.pdf
X-12345678911.pdf
Y-12345678911.pdf
Z-12345678911.pdf
usw.
Mein Plan ist es, mithilfe eines Klicks auf einen Button ein Makro zu starten, was die drei zusammengehoerenden pdf-Dateien anhand der zehnstelligen Nummer erkennt und in einen eigenen Ordner verschiebt. Der Name des neuen Ordners soll aus der zehnstelligen Nummer und dem Erstelldatum bestehen.
Existiert ein Ordner bereits waere eine Fehlermeldung sinnvoll.
Die zehnstelligen Nummern sind dabei variabel.
Im naechsten Schritt moechte ich Informationen (z.B. ein Datum) aus einer dieser PDFs auslesen und bspw. in einer Excelliste einpflegen. Vielleicht mit einem neuen Button.
Ich Weiss allerdings nicht, ob das, aus einer pdf heraus, moeglich ist oder nicht?
Ich versuche mich gerade ein bisschen in das Thema einzulesen, um mir ein gewisses Verstaendnis anzueignen. Moechte meine Kenntnisse gern erweitern.
Ich freue mich sehr ueber Hilfe und Erklaerungen.
Viele Gruesse aus Melbourne
Tom

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ungeprüft
16.07.2019 13:19:16
Fennek

const Pfad as string = "c:\temp\" '>>
sub PDF_verschieben()
f = dir(Pfad & "*.pdf")
do until f = ""
Nm = mid(f, 3, 14)
if dir(Pfad & Nm, vbDirectory) = "" then Mkdir Pfad & Nm
NAME Pfad & f AS Pfad & NM
f = dir
loop
end sub

AW: ungeprüft
16.07.2019 14:02:41
UweD
Hallo Fennek
so ähnlich hatte ich auch angefangen.
Nach langem Fehlersuchen ...
Durch das Zweite dir(2222) innerhalb der ersten Dir(1111) "Schleife" bezieht sich
das 3. Dir(), was sich ja normal auf 1111 bezieht, nun aber auf 2222
Dadurch ist nach der ersten Datei Schluss
LG UweD
Anzeige
AW: ungeprüft II
16.07.2019 14:36:02
Fennek
@Uwe
das stimmt natürich!
Da ich es nicht nachbauen möchte, noch einmal ungeprüft:

const Pfad as string = "c:\temp\" '>>
sub PDF_verschieben()
dim WHS as object
set WHS = CreateObject("Shell.Application")
f = dir(Pfad & "*.pdf")
do until f = ""
Nm = mid(f, 3, 14)
.NameSpace(Pfad).NewFolder(Nm)
NAME Pfad & f AS Pfad & NM
f = dir
loop
set WHS = nothing
end sub
mfg
AW: pdf sortieren und Ordner erstellen via VBA Button
16.07.2019 13:39:18
UweD
Hallo
Option Explicit

Sub alle_Dateien_Verzeichnis() ' 
    On Error GoTo Fehler
    Dim strPfad As String, strSubPfad As String, strMaske As String, strDatei As String, strDatum As String, strName As String
    
    strPfad = "x:\Temp\Test\" '**** mit \ 
    strMaske = "*-*.pdf"
    
    'Datumals Präfix 
    strDatum = Format(Date, "YYYYMMDD") & "_"
    
    
    strDatei = Dir(strPfad & strMaske)
    Do While Len(strDatei) > 0
    
        strName = Replace(strDatei, ".pdf", "")
        strName = Mid(strName, InStr(strName, "-") + 1)
        
        'Nur wenn 10 stellige Zahl 
        If IsNumeric(strName) And Len(strName) = 10 Then
            
            'Unterverz anlegen, wenn noch nicht da 
            strSubPfad = strName & "\"
            If Not PfadVorhanden(strPfad & strSubPfad) Then
                MkDir strPfad & strSubPfad
            End If
            
            'Datei verschieben und dabei umbenennen 
            Name strPfad & strDatei As strPfad & strSubPfad & strDatum & strDatei
        End If
        strDatei = Dir() ' nächste Datei 
    Loop
    
    
    Err.Clear
Fehler:
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear

End Sub
   
Public Function PfadVorhanden(strPfad As String)
    Dim objFSO As Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    If objFSO.folderExists(strPfad) = True Then
        PfadVorhanden = True
    Else
        PfadVorhanden = False
    End If
    Set objFSO = Nothing
End Function

LG UweD
Anzeige
AW: pdf sortieren und Ordner erstellen via VBA Button
17.07.2019 05:03:25
Tom
Hallo Uwe,
auch zu dir: vielen lieben Dank fuer die Unterstuetzung! :)
Auch deinen Code habe ich versucht anzuwenden.
Leider sitze ich hier mit einem ratlosen Ergebnis.
Ein Ordner wird einerseits erstellt, aber die Dateien warden nicht verschoben bzw. muessten es auch mehrere Ordner sein, weil ich verschiedene Nummern im Ordner platziert habe.
Zusaetzlich kommt auch hier die Fehlermeldung: File not found
Es zeigt auch keinen Fehler im Code an, so dass ich nicht weiss, was ich aendern muss.
Viele Gruesse
Tom
AW: pdf sortieren und Ordner erstellen via VBA Button
17.07.2019 09:22:17
UweD
Hallo
dann zeig doch mal eine Übersicht der echten Dateinamen.
Die schreibst im ersten Beitrag, 10 Ziffern, abgebildet waren aber 11.
Ggf ist da schon das Problem.
Setze mal ein ' vor die Fehlerbehandlung.
'On Error GoTo Fehler
dann wird der Fehler angezeigt.
LG UweD
Anzeige
AW: pdf sortieren und Ordner erstellen via VBA Button
17.07.2019 09:39:50
UweD
Hallo nochmal
eine Sache hab ich noch geändert.
Im Verzeichnisname wird jetzt das Datum angehangen und nicht in der Datei.
Sub alle_Dateien_Verzeichnis() ' 
    On Error GoTo Fehler
    Dim strPfad As String, strSubPfad As String, strMaske As String, strDatei As String, strDatum As String, strName As String
    
    strPfad = "x:\Temp\Test\" '**** mit \ 
    strMaske = "*-*.pdf"
    
    'Datumals Präfix 
    strDatum = Format(Date, "YYYYMMDD")
    
    
    strDatei = Dir(strPfad & strMaske)
    Do While Len(strDatei) > 0
    
        strName = Replace(strDatei, ".pdf", "")
        strName = Mid(strName, InStr(strName, "-") + 1)
        
        'Nur wenn 10 stellige Zahl 
        If IsNumeric(strName) And Len(strName) = 10 Then
            
            'Unterverz anlegen, wenn noch nicht da 
            strSubPfad = strName & "_" & strDatum & "\"
            If Not PfadVorhanden(strPfad & strSubPfad) Then
                MkDir strPfad & strSubPfad
            End If
            
            'Datei verschieben und dabei umbenennen 
            Name strPfad & strDatei As strPfad & strSubPfad & strDatei
        End If
        strDatei = Dir() ' nächste Datei 
    Loop
    
    
    Err.Clear
Fehler:
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear

End Sub
   
Public Function PfadVorhanden(strPfad As String)
    Dim objFSO As Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    If objFSO.folderExists(strPfad) = True Then
        PfadVorhanden = True
    Else
        PfadVorhanden = False
    End If
    Set objFSO = Nothing
End Function

sieht dann so aus
vorher:
Userbild
nachher:
Userbild
LG UweD
Anzeige
AW: pdf sortieren und Ordner erstellen via VBA Button
17.07.2019 04:43:39
Tom
Hallo Franz,
vorab vielen Dank! :)
Ich versuche es gerade mit deinem Makro.
Leider bekomme ich die Fehlermeldung (Path not found) fuer die Zeile des Codes:
VBA.MkDir Path:=sNeu
Ich kann deinen Code nachvollziehen, weiss aber nicht was ich im Code aendern muss.
Viele Gruesse
Tom
AW: pdf sortieren und Ordner erstellen via VBA Button
18.07.2019 15:56:12
fcs
Hallo Tom,
ich hab das Makro bei mir lokal getestet unter
- Windows Vista und Office/Excel 2010 Professional
- Windows 10 und Office 365 (Excel Version 1906)
Da funktioniert das Erstellen der Unterverzeichnisse und das Verschieben der PDF-Dateien.
vorher
Userbild
nachher
Userbild
Im Blatt Liste werden ja die Dateien und das Unterverzeichnis, in das verschoben werden soll gelistet. Sieht das denn bei dir soweit "normal" aus?
Evtl. gibt es Probleme, weil die Verzeichnisse in anderer Schreibweise ausgelsen werden bzw. in einem Netzlaufwerk liegen.
Ich hab das Makro ein wenig angepasst und dabei Pfadtrennzeichen allgemeiner definiert.
https://www.herber.de/bbs/user/130977.xlsm
LG
Franz
Anzeige

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige