Thema Datum  Von Nutzer Rating
Antwort
31.08.2017 12:33:09 Anna
NotSolved
Blau Vergleich Spalte + Dateinamen in Ordner
31.08.2017 15:27:40 Ben
NotSolved

Ansicht des Beitrags:
Von:
Ben
Datum:
31.08.2017 15:27:40
Views:
501
Rating: Antwort:
  Ja
Thema:
Vergleich Spalte + Dateinamen in Ordner

Hallo Anna,

dieser Code sollte das gewünschte Ergebnis bringen:

Option Explicit

Const SearchPath As String = "%%thisworkbook%%\Berichte\"

Sub FindNewFiles()
    Dim wsh As Worksheet
    Dim sPath As String
    Dim sFile As String
    Dim colFiles As New Collection
    'Dim fso As New Scripting.FileSystemObject
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    sPath = GetPath(SearchPath)
    sFile = Dir(sPath & "*.xlsm")
    
    Set wsh = ThisWorkbook.Worksheets(2)
    
    Do Until sFile = ""
        sFile = Left(sFile, Len(sFile) - 1 - Len(fso.GetExtensionName(sPath & sFile)))
        If wsh.Range("A:A").Find(what:=sFile, lookAt:=xlWhole) Is Nothing Then
            colFiles.Add sFile
        End If
        sFile = Dir()
    Loop
    
    ' Collection Sortieren
    SortCollection colFiles
    
    ' Ausgabe in Spalte B
    ViewCollection colFiles, ThisWorkbook.Worksheets(2).Range("B:B")
End Sub

Sub ViewCollection(colF As Collection, rngOut As Range)
    Dim rng  As Range
    Dim iPos As Integer
    rngOut.ClearContents
    iPos = 1
    For Each rng In rngOut.Cells
        If iPos <= colF.Count Then
            rng.Value = colF.Item(iPos)
            iPos = iPos + 1
        Else
            Exit For
        End If
    Next
End Sub

Sub SortCollection(ByRef colF As Collection)
    Dim iPos As Integer
    
    iPos = 2
    Do Until iPos > colF.Count
        If colF.Item(iPos - 1) > colF.Item(iPos) Then
            colF.Add Item:=colF.Item(iPos - 1), After:=iPos
            colF.Remove iPos - 1
            If iPos > 2 Then
                iPos = iPos - 1
            End If
        Else
            iPos = iPos + 1
        End If
    Loop
End Sub

Function GetPath(ByVal sPath As String) As String
    sPath = Replace(sPath, "%%thisworkbook%%", ThisWorkbook.Path)
    ' Weitere Felder können hier eingesetzen werden.
    GetPath = sPath
End Function

Der Pfad zum Ordner "Berichte" kann durch Setzen der Variable "SearchPath" angepasst werden.

Wichtige Info: Im Code wird nicht die Existenz des SuchPfads geprüft.

LG, Ben


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
31.08.2017 12:33:09 Anna
NotSolved
Blau Vergleich Spalte + Dateinamen in Ordner
31.08.2017 15:27:40 Ben
NotSolved