Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1800to1804
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

Unterordner durchsuchen

Unterordner durchsuchen
03.01.2021 17:52:29
Michael
Hallo und frohes neues,
mit u,g. Code werden Daten aus Zellen mit PDF -Dateien auf dem Server verglichen und verlinkt.
Dies funktioniert schon sehr gut , aber es wird nur der ausgewählte Ordner durchsucht und verlinkt.
Es werden immer mehr Aufträge nach Maschinen und Datum in vielen Unterordnern gespeichert. Da ich alle 2 -3 Wochen die Daten verlinke muss jeden einzelnen Ordner auswählen, es Nervt und kostet Zeit.
Wie kann ich es realisieren dass, auch die Unterordner durchsucht werden ?
Danke vorab für Eure Hilfe.
Sub Verlinken()
Dim L As Long
Dim cnt As Long
Dim lngLRow As Long
Dim strOrdner As String
Dim passwd As String
passwd = InputBox("Bitte Passwort eingeben.")
If passwd  "123" Then
MsgBox "Falsches Passwort", vbCritical, "Falsches Passwort"
Exit Sub
End If
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "X:\B\Produktion\Archiv\Test\2020"
.Title = "Ordner auswählen..."
.ButtonName = "Auswahl"
.InitialView = msoFileDialogViewList
If .Show = -1 Then
strOrdner = .SelectedItems(1)
If Right(strOrdner, 1)  "\" Then strOrdner = strOrdner & "\"
Else
strOrdner = ""
End If
End With
If strOrdner = "" Then
MsgBox "Abbruch durch Benutzer (Kein Ordner ausgewählt)"
Exit Sub
End If
lngLRow = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row
cnt = 0
If lngLRow  "" Then
.Hyperlinks.Add anchor:=.Range("E" & L), Address:=strOrdner & "\" & .Range("E" & L). _
_
_
Value & ".pdf"
cnt = cnt + 1
End If
Next
End With
Sheets("MF_Buch").Protect Password:="123"
MsgBox "Bei " & cnt & " von " & L - 10 & " Auftragsnummern wurde ein PDF Dokument verlinkt"
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Unterordner durchsuchen
03.01.2021 18:45:54
Michael
Hallo Hajo
zunächst Danke Dir für den Vorschlag, aber wenn ich ehrlich sein soll , kann ich nichts mit anfangen.
Noch habe ich zu wenig VBA-Kenntnisse um dein Makro auf meine Bedürfnisse anpassen zu können.
In meinem Makro wird die Spalte E nach Daten ( Zahlen ) zb: 1234 mit gleichnamigen PDF-Dateien zb: 1234.pdf in Ordnern gesucht und wenn Treffer verlinkt.
Wie vorhin geschrieben soweit funktioniert gut nur die Unterordner werden nicht durchsucht.
Ich muss jedes Mal das Makro neu starten und jeden einzelnen Ordner auswählen
Anzeige
AW: Unterordner durchsuchen
03.01.2021 18:46:20
Nepumuk
Hallo Michael,
teste mal:
Option Explicit

Sub Verlinken()
    Dim L As Long
    Dim cnt As Long
    Dim lngLRow As Long
    Dim strOrdner As String
    Dim astrFolders() As String
    Dim ialngFolders As Long
    
    If InputBox("Bitte Passwort eingeben.") <> "123" Then
        
        MsgBox "Falsches Passwort", vbCritical, "Falsches Passwort"
        Exit Sub
        
    End If
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        
        .InitialFileName = "X:\B\Produktion\Archiv\Test\2020"
        .Title = "Ordner auswählen..."
        .ButtonName = "Auswahl"
        .InitialView = msoFileDialogViewList
        If .Show Then strOrdner = .SelectedItems(1) & "\"
        
    End With
    If strOrdner = "" Then
        
        MsgBox "Abbruch durch Benutzer (Kein Ordner ausgewählt)"
        Exit Sub
        
    End If
    
    lngLRow = Cells(Rows.Count, 5).End(xlUp).Row
    
    If lngLRow < 10 Then
        
        MsgBox "Abbruch durch Benutzer (Keine Auftragsnummern in Spalte E)"
        Exit Sub
        
    End If
    
    astrFolders = GetFolders(strOrdner)
    
    With ActiveSheet
        
        Sheets("MF_Buch").Unprotect Password:="123"
        
        For L = 10 To lngLRow
            
            For ialngFolders = LBound(astrFolders) To UBound(astrFolders)
                
                If Dir(astrFolders(ialngFolders) & .Range("E" & L).Value & ".pdf") <> "" Then
                    
                    .Hyperlinks.Add Anchor:=.Range("E" & L), _
                        Address:=astrFolders(ialngFolders) & .Range("E" & L).Value & ".pdf"
                    
                    cnt = cnt + 1
                    
                    Exit For
                    
                End If
            Next
        Next
    End With
    
    Sheets("MF_Buch").Protect Password:="123"
    
    MsgBox "Bei " & cnt & " von " & L - 10 & " Auftragsnummern wurde ein PDF Dokument verlinkt"
    
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

Gruß
Nepumuk
Anzeige
AW: Unterordner durchsuchen
03.01.2021 19:19:38
Michael
Besten Dank Nepumuk, funktioniert einwandfrei.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige