Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
740to744
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
740to744
740to744
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ordner-Struktur einlesen II

Ordner-Struktur einlesen II
14.03.2006 10:13:56
Andreas
Hallo,
habe mein Problem gestern schon mal geschildert.
(Siehe https://www.herber.de/forum/messages/743739.html)
Nachdem ich bisher keine Antwort bekam, habe ich mich nochmals selbst ganz schlimm an der Lösung versucht, aber ich produziere immer nur Schrott.
Vielleicht könnte einer von Euch Spezialisten mal drüber schauen.

Die Datei https://www.herber.de/bbs/user/31870.xls wurde aus Datenschutzgründen gelöscht

Ich wäre für jede Hilfe echt dankbar.
Andreas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchen Sie Sowas?
14.03.2006 10:47:13
Andreas
Hallo Sylvio,
danke, dass Du Dir Zeit nimmst.
Dein Beispiel trifft's aber leider nicht ganz.
Hier vielleicht zur Erleichterung der Hintergrund meines Anliegens:
Ich habe eine Verzeichnisstruktur erstellt, die ich anderen Anwendern als Vorlage zur Verfügung stelle. In dieser Struktur werden von verschiedenen Personen Dateien eingepflegt.
Meine Datei soll eine Übersicht darstellen über die momentane Struktur und der vorhandenen Dateien. Nur fehlen hier jeweils noch die Dateien unter jeden Ordner (mögl. wieder um eine Spalte nach rechts versetzt) und das am besten noch verlinkt.
Die versetzte Anordnung, wie in meinem Beispiel wäre sehr gut für die Übersichtlichkeit, da doch einige Dateien zusammenkommen werden.
Als optionale 'Zugabe' wäre evtl. gut wenn die jeweiligen Ordner auch noch verlinkt wären, es würde die Pflege für die anderen Anwender erleichtern, wenn der Ordner gleich im Explorer 'aufspringt'.
Das wäre weltklasse {:-))
Gruß Andreas
Anzeige
AW: Suchen Sie Sowas?
14.03.2006 11:08:30
Calypso
Hi,
Vielleicht hilft der Dateilister von den Smart Tools.
Gibt's kostenlos hier: http://www.add-in-world.com/katalog/
im Bereich Excel.
Alternativ hätte ich noch eine verlinkte Version, jedoch nicht eingerückt nach
jedem verzeichnis. Der Upload hat aber nicht funktioniert.
Bei Bedarf melde Dich nochmal.
Gruß
Calypso
AW: Suchen Sie Sowas?
14.03.2006 11:28:38
Andreas
Hallo Calypso,
erst mal danke.
Den Dateilister kenne ich schon. Der würde notfalls reichen, müsste aber bei jedem Anwender installiert werden (leider zu aufwändig).
Der Dateilister verlinkt auch nicht, was gut wäre.
Und die Abblidung der Ordnerstruktur ist auch etwas unübersichtlich, da die Unterordner irgendwo weiter unten stehen und ich diese beim 'Überordner' nicht gleich sehe. Deshalb wäre die Abbildung wie in meinem Upload optimal (Darstellung ähnlich wie Explorer).
Andreas
Anzeige
AW: Suchen Sie Sowas?
14.03.2006 12:55:37
Heiko
Hallo Andreas,
z.B. so, nicht sehr übersichtlich aber bei mir Lauffähig. Alles in ein allgemeines Modul.

Option Explicit
Dim strDirs() As String
Dim strPaths() As String
Dim intTiefe() As Integer
Dim intArrayCounter As Integer, intTiefeMerker As Integer
Sub ShowDir()
Dim inthelp As Integer, intN As Integer, intI As Integer
Dim strPfad As String
strPfad = "D:\"
Erase strDirs
Erase intTiefe
intArrayCounter = 0
intTiefeMerker = 1
ShowFolderList (strPfad)
ActiveSheet.Cells.Delete
ActiveSheet.Cells(1, 1) = strPfad
intN = 1
With Application.FileSearch
.NewSearch
.LookIn = strPfad
.SearchSubFolders = False
.FileType = msoFileTypeAllFiles
.Execute
If .FoundFiles.Count > 0 Then
For intN = 1 To .FoundFiles.Count
ActiveSheet.Hyperlinks.Add ActiveSheet.Cells(intN, intTiefe(inthelp) + 1), _
.FoundFiles(intN)
Next intN
End If
End With
For inthelp = LBound(strDirs) To UBound(strDirs)
ActiveSheet.Cells(intN, intTiefe(inthelp)) = strDirs(inthelp)
intN = intN + 1
With Application.FileSearch
.NewSearch
.LookIn = strPaths(inthelp)
.SearchSubFolders = False
.FileType = msoFileTypeAllFiles
.Execute
If .FoundFiles.Count > 0 Then
For intI = 1 To .FoundFiles.Count
ActiveSheet.Hyperlinks.Add ActiveSheet.Cells(intN, intTiefe(inthelp) + 1), _
.FoundFiles(intI)
intN = intN + 1
Next intI
End If
End With
Next inthelp
End Sub
Private Function ShowFolderList(strPath As String)
Dim objFileSystemOb As Object, objGetFolder As Object, objSubFolderList As Object
Dim objSubFolder As Object
Dim strSubName As String
Set objFileSystemOb = CreateObject("Scripting.FileSystemObject")
Set objGetFolder = objFileSystemOb.GetFolder(strPath)
Set objSubFolder = objGetFolder.SubFolders
On Error GoTo errorhandler
For Each objSubFolderList In objSubFolder
strSubName = objSubFolderList.Name
' Versteckte Verzeichnisse und Systemordner nicht mit ausgeben.
If (GetAttr(strPath & strSubName) And vbDirectory) And _
(GetAttr(strPath & strSubName) And vbHidden) = False And _
(GetAttr(strPath & strSubName) And vbSystem) = False Then
ReDim Preserve strDirs(intArrayCounter)
ReDim Preserve strPaths(intArrayCounter)
ReDim Preserve intTiefe(intArrayCounter)
strDirs(intArrayCounter) = strSubName
strPaths(intArrayCounter) = objSubFolderList.Path
intTiefe(intArrayCounter) = intTiefeMerker
intArrayCounter = intArrayCounter + 1
intTiefeMerker = intTiefeMerker + 1
ShowFolderList (strPath & objSubFolderList.Name & "\")
intTiefeMerker = intTiefeMerker - 1
End If
Next
errorhandler:
strSubName = "Kein Zugriff"
Resume Next
End Function

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Suchen Sie Sowas?
14.03.2006 13:50:06
Andreas
Hallo Heiko, hallo Sylvio,
vielen Dank für Eure gute Hilfe.
Heiko, Dein Beispiel ist eigentlich schon genau, wie ich es brauche, weil verlinkt. 8-)).
Ist es noch möglich, auch die Ordner zu verlinken, so dass sich der Explorer öffnet?
Dann wäre meine Woche gerettet.
Andreas
AW: Suchen Sie Sowas?
14.03.2006 14:05:10
Heiko
Hallo Andreas,
dann so, bitte Code komplett austauschen.

Option Explicit
Dim strDirs() As String
Dim strPaths() As String
Dim intTiefe() As Integer
Dim intArrayCounter As Integer, intTiefeMerker As Integer
Sub ShowDir()
Dim inthelp As Integer, intN As Integer, intI As Integer
Dim strPfad As String
Application.ScreenUpdating = False
strPfad = "D:\"
Erase strDirs
Erase intTiefe
Erase strPaths
ReDim Preserve strDirs(intArrayCounter)
ReDim Preserve strPaths(intArrayCounter)
ReDim Preserve intTiefe(intArrayCounter)
strDirs(0) = strPfad
strPaths(0) = strPfad
intTiefe(0) = 1
intTiefeMerker = 1
intArrayCounter = 1
ShowFolderList1 (strPfad)
ActiveSheet.Cells.Delete
intN = 1
For inthelp = LBound(strDirs) To UBound(strDirs)
ActiveSheet.Hyperlinks.Add ActiveSheet.Cells(intN, intTiefe(inthelp)), _
Address:=strPaths(inthelp), TextToDisplay:=strDirs(inthelp)
ActiveSheet.Cells(intN, intTiefe(inthelp)).Font.Bold = True
ActiveSheet.Cells(intN, intTiefe(inthelp)).Font.ColorIndex = 3
With Application.FileSearch
.NewSearch
.LookIn = strPaths(inthelp)
.SearchSubFolders = False
.FileType = msoFileTypeAllFiles
.Execute
If .FoundFiles.Count > 0 Then
For intI = 1 To .FoundFiles.Count
ActiveSheet.Hyperlinks.Add ActiveSheet.Cells(intN, intTiefe(inthelp) + 1), _
.FoundFiles(intI)
intN = intN + 1
Next intI
End If
End With
intN = intN + 1
Next inthelp
Application.ScreenUpdating = True
End Sub
Private Function ShowFolderList1(strPath As String)
Dim objFileSystemOb As Object, objGetFolder As Object, objSubFolderList As Object
Dim objSubFolder As Object
Dim strSubName As String
Set objFileSystemOb = CreateObject("Scripting.FileSystemObject")
Set objGetFolder = objFileSystemOb.GetFolder(strPath)
Set objSubFolder = objGetFolder.SubFolders
On Error GoTo errorhandler
For Each objSubFolderList In objSubFolder
strSubName = objSubFolderList.Name
' Versteckte Verzeichnisse und Systemordner nicht mit ausgeben.
If (GetAttr(strPath & strSubName) And vbDirectory) And _
(GetAttr(strPath & strSubName) And vbHidden) = False And _
(GetAttr(strPath & strSubName) And vbSystem) = False Then
ReDim Preserve strDirs(intArrayCounter)
ReDim Preserve strPaths(intArrayCounter)
ReDim Preserve intTiefe(intArrayCounter)
strDirs(intArrayCounter) = strSubName
strPaths(intArrayCounter) = objSubFolderList.Path
intTiefe(intArrayCounter) = intTiefeMerker
intArrayCounter = intArrayCounter + 1
intTiefeMerker = intTiefeMerker + 1
ShowFolderList1 (strPath & objSubFolderList.Name & "\")
intTiefeMerker = intTiefeMerker - 1
End If
Next
errorhandler:
strSubName = "Kein Zugriff"
Resume Next
End Function

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Suchen Sie Sowas?
14.03.2006 14:20:21
Andreas
Hallo Heiko,
absolut geil !!!
Genau so, wie ich es brauche.
Ich muss schon sagen, die ist das mit Abstand beste Excel-Forum, dass ich kenne.
Großes Lob, weiter so.
Und danke nochmal
Andreas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige