Ich erstelle Ordner und Hyperlinks nach einer Spalte .Range("L6:L200")
Wie kann ich jetzt die Hyperlinks nicht in .Range("L6:L200") sondern in .Range("R6:R200") erstellen lassen.
Bsp.: Hyperlink .Range("R6") erstellen wenn .Range("L6") Wert hat.
Code:
'Ordner und Hyperlinks nach Liste anlegen Sub OrdnerUndLinksNachListe()
Dim Ws As Worksheet Dim Liste As Range Dim Unterordner As Range Dim Pfad As String
Application.ScreenUpdating = False
Set Ws = ThisWorkbook.Worksheets("Prüfungen") With Ws Set Liste = .Range("L6:L200") For Each Unterordner In Liste.SpecialCells(xlCellTypeConstants) ErstelleOrdner (ThisWorkbook.Path & "/" & Unterordner & "/") Unterordner.Hyperlinks.Add _ anchor:=Unterordner, Address:=ThisWorkbook.Path & "/" & Unterordner & "/", _ ScreenTip:="Klicken um Ordner zu öffnen", _ TextToDisplay:="" & Unterordner & "" Next Unterordner End With
Application.ScreenUpdating = True
End Sub
'Neuen Ordner anlegen, wenn noch nicht vorhanden Sub ErstelleOrdner(Pfad As String) If OrdnerExistiert(Pfad) = False Then MkDir Pfad End If End Sub
'Prüfen ob Ordner schon vorhanden Function OrdnerExistiert(Pfad As String) As Boolean If Dir(Pfad, vbDirectory) = "" Then OrdnerExistiert = False Else OrdnerExistiert = True End If End Function
War noch etwas mehr antupassen, da es so nicht funktionierte.
Angepasster Code:
Code:
'Ordner und Hyperlinks nach Liste anlegen Sub OrdnerUndLinksNachListe()
Dim Ws As Worksheet Dim Liste As Range Dim Unterordner As Range Dim Pfad As String
Application.ScreenUpdating = False
Set Ws = ThisWorkbook.Worksheets("Prüfungen") With Ws Set Liste = .Range("L6:L200") For Each Unterordner In Liste.SpecialCells(xlCellTypeConstants) ErstelleOrdner (ThisWorkbook.Path & "/" & Unterordner & "/") Unterordner.Offset(, 6).Hyperlinks.Add _ anchor:=Unterordner.Offset(, 6), Address:=ThisWorkbook.Path & "/" & Unterordner & "/", _ ScreenTip:="Klicken um Ordner " & """" & Unterordner & """" & " zu öffnen", _ TextToDisplay:="Ordner " & """" & Unterordner & """" & " öffnen" Unterordner.Offset(, 6).Font.ColorIndex = 3 Next Unterordner End With
MsgBox "Ordner wurden erstellt!", vbInformation, "Ordnererstellung" Application.ScreenUpdating = True
End Sub
Hab jetzt das automatische ausfühen eingefügt.
Code:
Private Sub Worksheet_Change(ByVal Target As Range) If Not Application.Intersect(Target, Sheets("Prüfungen").Range("L6:L200")) Is Nothing Then Call OrdnerUndLinksNachListe End If End Sub
Nur wie bekomme in in Spalte R die Einträge gelöscht wenn ich in Spalte L lösche?
01.03.2025, 09:53 (Dieser Beitrag wurde zuletzt bearbeitet: 01.03.2025, 10:00 von Andyle.)
Hat sich erledigt!
Code:
Code:
'Ordner und Hyperlinks nach Liste anlegen Sub OrdnerUndLinksNachListe()
ActiveSheet.Unprotect
Dim Ws As Worksheet Dim Liste As Range Dim Unterordner As Range Dim Pfad As String
Application.ScreenUpdating = False
If ActiveCell.Value <> "" Then
Set Ws = ThisWorkbook.Worksheets("Prüfungen") With Ws Set Liste = .Range("L6:L200") For Each Unterordner In Liste.SpecialCells(xlCellTypeConstants) ErstelleOrdner (ThisWorkbook.Path & "/" & Unterordner & "/")
MsgBox "Ordner wurden erstellt!", vbInformation, "Ordnererstellung"
ActiveSheet.Protect
End Sub
Gibt es eventuell eine Möglichkeit der Ordnerüberwachung? In Range("L6:L200") stehen alle zu erstellenden Ordner als Text.
Diese werden ja auch erstellt.
Bei der Makroausführung soll er schauen, ob nur alle in Range("L6:L200") Ordner existieren.
Gibt es einen weiteren "unbekannten" Ordner der nicht in Range("L6:L200") steht soll er schauen, ob Dateien drin sind. Wenn nicht dann Ordner löschen wenn er nicht in Range("L6:L200") aufgelistet ist.
mit dieser Beispieldatei kannst du alle Ordner auflisten. Umgemodelt auf Ordner mit Inhalten. Das Makro kannst du ja auf deinen Bereich ab L6:L200 selbst umschreiben. Viel Spass.