Excel VBA - Link auf Datei im Ordner erstellen

Biertrinker

Ensign
Registriert
Okt. 2022
Beiträge
166
Hallo zusammen.

Folgende Situation:

Habe einen Ordner, in dem liegen vielen Dateien die alle möglichen Namen haben, alle PDF.

sdkfsdkjBEISPIEL1.pdf
3249823asBEISPIEL2.pdf
sdjksdf198k,jBEISPIEL3sksdkfj.pdf


Dann habe ich in Excel eine Tabelle in der in einer Spalte F Teile der Namen stehen also:

BEISPIEL1
BEISPIEL2
BEISPIEL3

usw.

Ich würde nun gerne per VBA realisieren, dass Excel in dem Ordner in dem die Dateien liegen automatisch einen Link auf die Datei erstellt in einer Spalte direkt danben, sagen wir Spalte G.
Sprich in Zelle F1 mit Inhalt BEISPIEL1 einen Link auf die Datei in der das Wort "BEISPIEL1" drinnen steckt.
Zelle F2 mit Inhalt BEISPIEL2 einen Link auf die Datei die "BEISPIEL2" enthält.

Wie kann ich das machen? Ich bekomme es einfach nicht hin. Dankeschön an alle vorab.
 
Hi,

nur damit ich richtig verstehe. Deine Dateien Beispiel1, Beispiel2 und Beispiel3 liegen im selben Ordner, richtig?
Die Namen der Ordner stehen in deinem Beispiel in der Spalte F - aber ohne die Endung ".pdf".

Hier mal basierend auf deiner Anforderung - so wie ich diese verstanden habe. Zum testen habe ich mir einen Ordner mit dem Namen "Beispieldateien" erzeugt. Dort habe ich zum Testen einen test.txt.

=HYPERLINK(VERKETTEN("C:\Beispieldateien\";F1;".txt"))

Im Feld F1 steht bei mir "test".
Die Formel erzeugt nun einen Link auf die Datei "test.txt", die im Ordner "C:\Beispieldateien\" hinterlegt ist.
Du kannst die Formel abändern und das ".txt" z.B. durch ".pdf" ersetzen.

Viele Grüße,
Kizi
 
Hallo.

Schon einmal vielen Dank für deine Antwort und die Hilfe!

Du verstehst mich korrekt, alle Dateien sind in einem Ordner, sind nach allem Möglichen benannt aber ein TEIL des Dateinamens ist immer der Wert aus Spalte F, korrekt. Und die stehen ohne Endung in Spalte F, korrekt.

Deine Formel würde gehen wenn die Datei genauso heißen würde, oder? Du erzeugst einen Link und sagst mach den Link PFAD+WERT AUS F1+.pdf

Soweit richtig verstanden?

Das Problem das ich habe ist aber, dass die Dateien ja nicht alle so heißen wie F1+.pdf Die heißen ja alles mögliche. Der Wert aus F1 ist nur ein TEIL des Namens, der kann überall stehen.

Hast du hier auch ne Lösung?
 
So?
Code:
Sub ErstelleLinksZuDateien()
    Dim OrdnerPfad As String
    Dim DateiName As String
    Dim Zelle As Range
    Dim HyperlinkAdresse As String
   
    ' Setzen Sie den Pfad zu Ihrem Ordner
    OrdnerPfad = "C:\Pfad\Zu\Ihrem\Ordner\"
   
    ' Durchlaufen Sie die Zellen in Spalte F
    For Each Zelle In ActiveSheet.Range("F1:F" & Cells(Rows.Count, 6).End(xlUp).Row)
        DateiName = Zelle.Value
        HyperlinkAdresse = OrdnerPfad & "*" & DateiName & "*.pdf" ' Annahme: Alle Dateien sind PDFs
       
        ' Suchen Sie die passende Datei im Ordner
        On Error Resume Next
        DateiName = Dir(HyperlinkAdresse)
        On Error GoTo 0
       
        If DateiName <> "" Then
            ' Fügen Sie den Hyperlink in Spalte G ein
            Zelle.Offset(0, 1).Hyperlinks.Add _
                Anchor:=Zelle.Offset(0, 1), _
                Address:=OrdnerPfad & DateiName, _
                TextToDisplay:=Zelle.Value
        Else
            ' Wenn keine passende Datei gefunden wurde
            Zelle.Offset(0, 1).Value = "Datei nicht gefunden"
        End If
    Next Zelle
End Sub

Bei mir gehts zumindest.

Randnotiz:
Klassicher Fall um mal ChatGPT, CoPilot oder Bard/Gemini zu fragen
 
Zuletzt bearbeitet:
Ich danke fir sehr für deinen Post. Hat mir wichtige Anhaltspunke geliefert. Mein Fertiger ist auf Basis deines Codes der geworden und funktioniert 1A:
Code:
Sub VerlinkePDFs()
    Dim I As Integer
    Dim LastRow As Integer
    Dim FilePath As String
    Dim FileName As String
    Dim CellValue As String
    
    'Pfad zum Ordner mit den PDF-Dateien
    FilePath = "G:\GK_Backoffice\2024\"
    
    'Letzte Zeile in Spalte F finden
    LastRow = Cells(Rows.Count, "F").End(xlUp).Row
    
    'Schleife durch alle Zellen in Spalte F
    For I = 2 To LastRow 'Starte bei Zeile 2, wenn Überschriften vorhanden sind
    
        'Fahrgestellnummer aus Zelle lesen
        CellValue = Cells(I, 6).Value
        
        'PDF-Datei im Ordner suchen, die die Fahrgestellnummer enthält
        FileName = Dir(FilePath & "*" & CellValue & "*.pdf")
        
        'Wenn eine passende Datei gefunden wurde, Verlinkung erstellen
        If FileName <> "" Then
            ActiveSheet.Hyperlinks.Add Anchor:=Cells(I, 6), Address:=FilePath & FileName, TextToDisplay:=CellValue
        End If
        
    Next I
    
End Sub


Randfrage: dachte ich mir auch schon dass ich fragen könnte weil das ja in aller Munde ist wie toll das sein soll, aber ich hätte keine Ahnung wie ich dieses Problem für GPT in einem Prompt gut hätte beschreiben können :(
 
Zurück
Oben