Thema Datum  Von Nutzer Rating
Antwort
Rot 1) Verzeichnis aller Dateien und Unterordner 2.)löschen markierter Dateien
04.01.2021 21:33:39 Steffi
NotSolved
04.01.2021 23:02:04 ralf_b
NotSolved
04.01.2021 23:05:29 ralf_b
NotSolved

Ansicht des Beitrags:
Von:
Steffi
Datum:
04.01.2021 21:33:39
Views:
73
Rating: Antwort:
  Ja
Thema:
1) Verzeichnis aller Dateien und Unterordner 2.)löschen markierter Dateien

Guten Abend.

in 2 Schritten, also mit separaten "Programmen" möchte ich zunnächst für ein auszuwählendes Verzeichnis alle Unterordner und alle Dateien (Name, letztes Speichern, evtl Fullname)  in eine Excel-Liste schreiben lassen. Dann soll  in der Liste  "manuell" durch Eintrag eins "X" in der Folgespalte markiert werden, dass die Datei zu löschen ist. In Excel würde ich einen Hyperlink zur Datei organisieren, damit diese bei Bedarf schnell geöffnet werden kann.

Das zweite "Programm" soll die markierten Dateien löschen und alle Ordner, die nach dem Löschen leer sind, sollen ebenfalls verschwinden.


Meine Datei heißt 20210104_cp_dateiscan.xlsm. in  Zelle B4 der Tabelles "Startseite" hat der user die Möglichkeit, bis zu 4 Ebenen der Speicherhierarchie auszuwählen, wobei die erstenn beiden vorgegeben werden. Das Ergebnis soll auf dem Blatt "Verzeichnis" ab E3 ausgegeben werden. Jede neue Ebene, bzw. jede Sub-Ebene soll eine Spalte weiter nach rechts gerückt werden, um die "Baumstruktur" deutlich zu machen. Der gesamte Inhhalt eines Ordners, also sowohl Dateien als auch Verzeichnisse, können in der gleichen Spalte gezeigt werden. Alternativ ginge auch Ordner in Baumstruktur  und alle Dateien in der Spalte nach der  Spalte für die unterste Ordner-Ebene. Ist es schlauer, auch den Pfad der Datei, also den Fullname ausweisen zu lassen, oder verkompliziert das die Sache eher? Wenn dann wäre es günstig, stünden alle  Fullnames in einer Spalte rechts der Struktur.

Spalte A habe ich für das Markieren/Auswählen vorgesehen, Spalte B für die Hyperlinks, Spalte C für das Datum der letzten Nutzung und D als leere Spalte.

also etwa so:

A                          B                  C                        D           E      -  ?                    .......           oder alternativ    A - D             |   E - ?      |    ? + 1  | ? + 2

löschen? (X)  Link zur     Datum                                 Verzeichnisse      Fiullname                               unverändert      Ordner   Dateien   Fullname

                         Datei         letzes Speichern               und Dateien

 

Aus einem Buch habe ich mir für den ersten Teil bereits Hilfe gesucht, aber leider funktioniert das nicht, und ich weiß nicht, woran es liegt.

Für den zweiten Teil bin ich noch völlig blank.

Sub Liste_aller_Dateien()

  Dim lngzeile As Long
  Dim lngspalte As Long
  Dim strPFad As String
  'Vom user vorgegebenen Pfad "merken" 
  Worksheets("startseite").Activate
    ActiveSheet.Range("b4").Copy

      Worksheets("Verzeichnis").Activate
  ActiveSheet.Range("A1").PasteSpecial xlPasteValues
strPFad = ActiveSheet.Range("a1").Value

  lngzeile = 2

  Call OrdnerAuslesen(strPFad, lngzeile, lngspalte)
End Sub

Sub OrdnerAuslesen(strPFad As String, ByRef lngzeile, ByRef lngspalte)

  Dim oFSO As Object
  Dim objOrdner As Object
  Dim objUnterordner As Object
  Dim objDatei As Object
  Dim Verzeichnis As Worksheet
  
   
  Set oFSO = CreateObject("Scripting.FileSystemObject")
  Set objOrdner = oFSO.getfolder(strPFad)
  
  lngspalte = lngspalte + 1

  For Each objDatei In objOrdner.Files
      lngzeile = lngzeile + 1
     Verzeichnis.Cells(lngzeile, lngspalte).Value = objDatei.Name
      Verzeichnis.Cells(lngzeile, lngspalte).Font.Bold = True
  Next objDatei
  For Each objUnterordner In objOrdner.Subfolders
      lngzeile = lngzeile + 1
      Verzeichnis.Cells(lngzeile, lngspalte).Value = objUnterordner.Name & "\"
      Verzeichnis.Cells(lngzeile, lngspalte).Font.Bold = False
      Call OrdnerAuslesen(objUnterordner.Path, lngzeile, lngspalte)
  Next objUnterordner
  
  lngspalte = lngspalte - 1
  
  Set oFSO = Nothing
  
  Exit Sub
  
Fehler:
  If Err.Number = 70 Then
      lngzeile = lngzeile + 1
      Verzeichnis.Cells(lngzeile, lngspalte).Value = "Zugriff verweigert"
  End If
  lngspalte = lngspalte - 1
  Set oFSO = Nothing

End Sub

 

Ich hoffe  sehr, ich habe alles verständlich dargestellt und dadurch meinen Helfern, möglichst wenig Aufwand bereitet.

Es wäre toll, könnte jemand helfen. Super wäre auch ein Hinweis, warum mein Code nicht läuft.

Vielen, vielen Dank im Voraus

Steffi

 

 

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst genau und ausführlich
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
  • Bitte markieren Sie Ihre Anfrage als erledigt wenn Ihnen geholfen wurde
Thema: Name: Email:

 
 

Thema Datum  Von Nutzer Rating
Antwort
Rot 1) Verzeichnis aller Dateien und Unterordner 2.)löschen markierter Dateien
04.01.2021 21:33:39 Steffi
NotSolved
04.01.2021 23:02:04 ralf_b
NotSolved
04.01.2021 23:05:29 ralf_b
NotSolved