Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
876to880
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
876to880
876to880
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Dateistruktur im excel einlesen

Dateistruktur im excel einlesen
13.06.2007 09:09:00
pain007
Hallo zusammen!
Ich habe ein bestehendes Makro umgeschrieben und möchte nun ein paar Ergänzungen hinzufügen: Das Sheet ist so aufgebaut: A: Dateiname mit Dateiendung, B: derzeit leer, C: ist manuell zu beschriften, D: Ordner, E,F,G enthalten informationen über Größe usw. H: Pfad, I:Hyperlink
Ich möchte in der Spalte B die Dateiendung stehen haben. In der Spalte A soll nur der Dateiname (ohne Endung) stehen.
Und in der Spalte I habe ich manuell mit Makro aufzeichnen eine Hyperlinkerstellung eingefügt. Ich lasse diese bis Zelle I 10000 laufen, ich hätte aber gerne, dass die Hyperlinkerstellung automatisch bis zu letzten Zeile der eingelesenen Dateistruktur durchgeführt wird, weil ich mir so ein wenig Rechenleistung sparen kann, wenn weniger als 10000 Dateien eingelesen werden.
Also hier der Quellcode:
Dim n
Dim dname(65000)
Dim dordner(65000)
Dim dcreated(65000)
Dim dpfad(65000)
Dim dlast(65000)
Dim dsize(65000)

Sub NeuEinlesen()
Set MyShell = CreateObject("wscript.shell")
Set MyFiles = CreateObject("Scripting.FileSystemObject")
Set Appshell = CreateObject("Shell.Application")
On Error Resume Next
Set AppFolder = Appshell.BrowseForFolder(0, "", &H1, 17)
verz = AppFolder.ParentFolder.ParseName(AppFolder.Title).Path
If Err.Number > 0 Then
i = InStr(AppFolder, ":")
verz = Mid(AppFolder, i - 1, 1) & ":\"
End If
If verz = "" Then Exit Sub
If n = 0 Then
Range("A3").Select
Range(Selection, Cells.SpecialCells(xlCellTypeLastCell)).ClearContents
End If
Set drive = MyFiles.GetFolder(verz)
Set dat = drive.Files
For Each datei In dat
n = n + 1
dname(n) = datei.Name
dordner(n) = drive.Path
dpfad(n) = datei.Path
dsize(n) = datei.Size
dcreated(n) = datei.datecreated
dlast(n) = datei.DateLastAccessed
Next
Search drive
For x = 1 To n
Cells(x + 2, 1).Value = dname(x)
Cells(x + 2, 4).Value = dordner(x)
Cells(x + 2, 5).Value = Int(dsize(x) / 1024)
Cells(x + 2, 6).Value = DateValue(Date) - DateValue(dcreated(x))
Cells(x + 2, 7).Value = DateValue(Date) - DateValue(dlast(x))
Cells(x + 2, 8).Value = dpfad(x)
With Worksheets("Tabelle1").Cells(intZahl, 9) = GetExtension(MyFiles.GetFolder(verz))
End With
Next
Application.ScreenUpdating = True
m = MsgBox(n & " Dateien eingetragen." & Chr(13) & "Weitere Daten hinzufügen?", 4)
If m = 6 Then NeuEinlesen
Range("A3").Select
Range(Selection, Cells.SpecialCells(xlCellTypeLastCell)).Select
Selection.Sort key1:=Range("D3"), order1:=xlAscending, Key2:=Range("A3") _
, Order2:=xlAscending, header:=xlNo
Range("A2:I2").Select
With Worksheets("Tabelle1")
If Not .AutoFilterMode Then
Selection.AutoFilter
End If
End With
Range("A2").Select
n = 0
End Sub



Sub Search(ByVal StartFolder)
Set Weitere = StartFolder.SubFolders
For Each AktuellerOrdner In Weitere
Set dat = AktuellerOrdner.Files
For Each datei In dat
n = n + 1
dname(n) = datei.Name
dordner(n) = AktuellerOrdner.Path
dpfad(n) = datei.Path
dsize(n) = datei.Size
dcreated(n) = datei.datecreated
dlast(n) = datei.DateLastAccessed
Next
Search AktuellerOrdner
Next
ActiveCell.FormulaR1C1 = "=HYPERLINK(RC[-1])"
Range("I3").Select
Selection.AutoFill Destination:=Range("I3:I10000"), Type:=xlFillDefault
Range("I3:I10000").Select
End Sub


Es wäre super, wenn mir jemand weiterhelfen könnte und den Quellcode abgeändert wieder hier reinstellen könnte, da meine VBA Kenntnisse gleich null sind :-)
Ich bedanke mich jetzt schon für Eure Hilfe im Voraus,
mfg pain007

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateistruktur im excel einlesen
13.06.2007 09:15:00
pain007
Entschuldige:
Die Zeile:
With Worksheets("Tabelle1").Cells(intZahl, 9) = GetExtension(MyFiles.GetFolder(verz))
End With
gehört nicht in den Quellcode und wurde entfernt, das war nur ein Versuch von mir.
Danke pain007

AW: Dateistruktur im excel einlesen
13.06.2007 12:24:59
Anton
Hallo pain007,
versuch's mal damit:

Dim n
Dim dname(65000)
Dim dordner(65000)
Dim dcreated(65000)
Dim dpfad(65000)
Dim dlast(65000)
Dim dsize(65000)
Sub NeuEinlesen()
 
  Set MyShell = CreateObject("wscript.shell")  
  Set MyFiles = CreateObject("Scripting.FileSystemObject")  
  Set Appshell = CreateObject("Shell.Application")  
  On Error Resume Next    
  Set AppFolder = Appshell.BrowseForFolder(0, "", &H1, 17)  
  verz = AppFolder.ParentFolder.ParseName(AppFolder.Title).Path
  If Err.Number > 0 Then  
    I = InStr(AppFolder, ":")
    verz = Mid(AppFolder, I - 1, 1) & ":\"
  End If  
  If verz = "" Then Exit Sub    
 
  If n = 0 Then  
    Range("A3").Select  
    Range(Selection, Cells.SpecialCells(xlCellTypeLastCell)).ClearContents  
  End If  
 
  Set drive = MyFiles.GetFolder(verz)  
  Set dat = drive.Files
  For Each datei In dat  
    n = n + 1
    dname(n) = datei.Name
    dordner(n) = drive.Path
    dpfad(n) = datei.Path
    dsize(n) = datei.Size
    dcreated(n) = datei.datecreated
    dlast(n) = datei.DateLastAccessed
  Next
  Search drive
  For x = 1 To n  
    Cells(x + 2, 1).Value = MyFiles.GetBaseName(dpfad(x))
    Cells(x + 2, 2).Value = MyFiles.GetExtensionName(dpfad(x))
    Cells(x + 2, 4).Value = dordner(x)
    Cells(x + 2, 5).Value = Int(dsize(x) / 1024)
    Cells(x + 2, 6).Value = DateValue(Date) - DateValue(dcreated(x))
    Cells(x + 2, 7).Value = DateValue(Date) - DateValue(dlast(x))
    Cells(x + 2, 8).Value = dpfad(x)
    ActiveSheet.Hyperlinks.Add Anchor:=Cells(x + 2, 9), Address:= _
      dpfad(x), TextToDisplay:=dname(x)
  Next
  Application.ScreenUpdating = True
  m = MsgBox(n & " Dateien eingetragen." & Chr(13) & "Weitere Daten hinzufügen?", 4)
  If m = 6 Then NeuEinlesen  
 
  Range("A3").Select  
  Range(Selection, Cells.SpecialCells(xlCellTypeLastCell)).Select  
  Selection.Sort key1:=Range("D3"), order1:=xlAscending, Key2:=Range("A3") _  
    , Order2:=xlAscending, header:=xlNo  
  Range("A2:I2").Select  
  With Worksheets("Tabelle1")
    If Not .AutoFilterMode Then    
      Selection.AutoFilter
    End If  
  End With  
  Range("A2").Select  
  n = 0
End Sub  
Sub Search(ByVal StartFolder)  
  Set Weitere = StartFolder.SubFolders  
  For Each AktuellerOrdner In Weitere    
    Set dat = AktuellerOrdner.Files  
    For Each datei In dat  
      n = n + 1
      dname(n) = datei.Name
      dordner(n) = AktuellerOrdner.Path
      dpfad(n) = datei.Path
      dsize(n) = datei.Size
      dcreated(n) = datei.datecreated
      dlast(n) = datei.DateLastAccessed
    Next
    Search AktuellerOrdner
  Next
End Sub  

mfg Anton

Anzeige
AW: Dateistruktur im excel einlesen
14.06.2007 08:11:00
pain007
Vielen Dank für die schnelle und vorallem professionelle Hilfe. Der Quellcode funktioniert wirklich super!
Genauso hatte ich mir das vorgestellt.
Habt ihr vielleicht auch eine Idee, wie ich zusätzlich eine Fortschrittsanzeige während des einlesens einbauen könnte? Problem ist, dass die Einlesevorgänge unterschiedlich lange dauern, je nach Größe des Ordners, der eingelesen wird.
Ich habe zwar schon ein paar Sachen im Internet gefunden, wußte aber nicht, wie ich diese einbauen kann.
Ich bedanke mich nochmals für Eure Hilfe!
Mfg pain007

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige