Hallo ich bin ein absoluter Neuling...
Bin auf Suche nach einem Makro das folgende Voraussetzungen erfüllen soll:
Aus einer Exceldatei sollen die freigegebenen Fremdformate im PDM gesucht werden. Schön wäre auch noch bei Zeichnungen die als einzelne DXF Dateien abgeleitet werden. Die folge Seiten auch noch mit in Suche aufzunehmen 
Wir haben schon ein Makro aber da kommen nicht alle Infos zurück. 
Wäre super, wenn mir hier jemand helfen könnte…
Option Explicit
Public Sub CopyFiles()
'1.) Ordnerpfad definieren
  Dim strFolderPath As String
  strFolderPath = "C:\Export\"
  ' Überprüfen, ob Ordner bereits existiert
  If Dir(strFolderPath, vbDirectory) = "" Then
    ' Ordner anlegen
    MkDir (strFolderPath)
    MsgBox "Ordner wird angelegt!"
  Else
    MsgBox "Ordner ist vorhanden!"
  End If
  
'2.) Ordner befüllen
   Const INPUT_PATH As String = "C:\SWx_PDM\"  'Anpassen !!! Backslash am _
Ende nicht löschen
    Const OUTPUT_PATH As String = "C:\Export\" 'Anpassen !!! _Backslash am Ende nicht löschen
    Dim astrFolders() As String, strFilename As String
    Dim avntValues As Variant, vntItem As Variant
    Dim ialngFolders As Long, ialngIndex As Long, lngCount As Long
    Dim objDictionary As Object
    Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
    Range(Cells(2, 2), Cells(Rows.Count, 2)).ClearContents
    avntValues = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp)).Value2
    With objDictionary
        For ialngIndex = LBound(avntValues) To UBound(avntValues)
            If Not .Exists(Key:=avntValues(ialngIndex, 1)) Then
                Call .Add(Key:=avntValues(ialngIndex, 1), Item:=ialngIndex + 1)
            Else
                Cells(ialngIndex + 1, 2).Value = ""
            End If
        Next
        astrFolders = GetFolders(INPUT_PATH)
        For Each vntItem In .Keys
            lngCount = 0                                                                             'Schleife für .PDF Export'
            For ialngFolders = LBound(astrFolders) To UBound(astrFolders)
                strFilename = Dir$(astrFolders(ialngFolders) & vntItem & "*.pdf")
                If strFilename <> vbNullString Then
                    Call FileCopy(Source:=astrFolders(ialngFolders) & strFilename, Destination:= _
OUTPUT_PATH & strFilename)
                    lngCount = 1                                                                     'Schleife für .step Export'
                End If
                strFilename = Dir$(astrFolders(ialngFolders) & vntItem & "*.step")
                If strFilename <> vbNullString Then
                    Call FileCopy(Source:=astrFolders(ialngFolders) & strFilename, Destination:= _
OUTPUT_PATH & strFilename)
                    lngCount = 2
                End If
                strFilename = Dir$(astrFolders(ialngFolders) & vntItem & "*.dxf")                    'Schleife für .dxf Export'
                If strFilename <> vbNullString Then
                    Call FileCopy(Source:=astrFolders(ialngFolders) & strFilename, Destination:= _
OUTPUT_PATH & strFilename)
                    lngCount = lngCount + 1
                End If
                If lngCount = 3 Then Exit For
            Next
            If lngCount = 0 Then
                Cells(.Item(Key:=vntItem), 2).Value = "Nicht vorhanden"
            Else
                Cells(.Item(Key:=vntItem), 2).Value = "Vorhanden"
            End If
        Next
    End With
    Set objDictionary = Nothing
End Sub
Private Function GetFolders(ByVal pvstrPath As String) As String()
    Dim astrFolders() As String
    Dim strFolder As String, strPath As String
    Dim ialngIndex1 As Long, ialngIndex2 As Long
    ReDim Preserve astrFolders(ialngIndex1)
    astrFolders(ialngIndex1) = pvstrPath
    ialngIndex1 = 1
    ialngIndex2 = 1
    strPath = pvstrPath
    Do
        strFolder = Dir$(PathName:=strPath & "*", Attributes:=vbDirectory)
        Do Until strFolder = vbNullString
            If strFolder <> "." And strFolder <> ".." Then
                If GetAttr(PathName:=strPath & strFolder) And vbDirectory Then
                    ReDim Preserve astrFolders(0 To ialngIndex1)
                    astrFolders(ialngIndex1) = strPath & strFolder & "\"
                    ialngIndex1 = ialngIndex1 + 1
                End If
            End If
            strFolder = Dir$
        Loop
        If ialngIndex1 = ialngIndex2 Then Exit Do
        strPath = astrFolders(ialngIndex2)
        ialngIndex2 = ialngIndex2 + 1
    Loop
    GetFolders = astrFolders
End Function
Viele Grüße Fränky
Ach so: Den Orginalcode habe ich  hierher:
https://www.herber.de/forum/archiv/1784to1788/1786970_Dateien_anhand_Liste_suchen_und_kopieren.html
[Diese Nachricht wurde von Fränky77 am 20. Sep. 2022 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP