Verzeichnisse visualisieren

Mit ein bisschen VBA kann man in Visio leicht die Ordnerstruktur visualisieren lassen:
Dazu benötigen Sie einige globale Variablen für die Zeilen- und Spaltennummern, die Visio-Datei, das zuletzt erstellte Shape und den Namen des Verzeichnisses:
Dim dblEbene As Double
Dim dblZeile As Double
Dim blnNeueZeile As Boolean
Dim vsDatei As Document
Dim vsSeite As Page
Dim strVerzeichnis As String
Dim vsRechteck As Shape
 
Der Ordner wird ausgewählt, eine neue Datei erstellt und auf die erste Seite zugegriffen. Das rekursive Programm wird aufgerufen.
Sub ListeVerzeichnisAuf()
Dim fso As FileSystemObject
Dim fsoVerzeichnis1 As Folder
Set fso = New FileSystemObject
strVerzeichnis = VerzeichnisAuswählen(„Bitte Verzeichnis auswählen!“)
If strVerzeichnis = „“ Then
MsgBox „Es wurde kein Verzeichnis ausgewählt“
Else
Set fsoVerzeichnis1 = fso.GetFolder(strVerzeichnis)
Set vsDatei = Application.Documents.Add(„“)
Set vsSeite = vsDatei.Pages(1)
dblEbene = 0: dblZeile = 11
blnNeueZeile = False
ZeigeVerzeichnis fsoVerzeichnis1
 
Das eigentliche Programm generiert Rechtecke, die an die entsprechende Position gesetzt und mit dem Verzeichnisnamen beschriftet werden.
Sub ZeigeVerzeichnis(ByVal fsoVerzeichnis1 As Folder)
Dim fsoVerzeichnis2 As Folder
dblEbene = dblEbene + 1.5
For Each fsoVerzeichnis2 In fsoVerzeichnis1.SubFolders
Set vsRechteck = vsSeite.DrawRectangle( _
dblEbene, dblZeile, dblEbene + 1.5, dblZeile – 0.5)
vsRechteck.Text = „\“ & fsoVerzeichnis2.Name
blnNeueZeile = False
ZeigeVerzeichnis fsoVerzeichnis2
Next
dblEbene = dblEbene – 1.5
If dblEbene = 1.5 Then
dblZeile = dblZeile – 0.25
End If
‚ — trenne die Hauptverzeichnisse voneinander
If blnNeueZeile = False Then
dblZeile = dblZeile – 0.5
blnNeueZeile = True
End If
‚ — nur das erste Mal eine Zeile tiefer
End Sub
 
Nach Beendigung wird die Seite an die benötigte Größe angepasst und der Name des ausgewählten Verzeichnisses in ein Überschriften-Shape geschrieben.
vsSeite.AutoSizeDrawing
Set vsRechteck = vsSeite.DrawRectangle( _
vsSeite.PageSheet.Cells(„PageWidth“).Result(„in“) / 2 – 3, _
vsSeite.PageSheet.Cells(„PageHeight“).Result(„in“) – 1, _
vsSeite.PageSheet.Cells(„PageWidth“).Result(„in“) / 2 + 3, _
vsSeite.PageSheet.Cells(„PageHeight“).Result(„in“) + 0)
vsRechteck.Text = strVerzeichnis
strVerzeichnis = „“
ActiveWindow.DeselectAll

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert