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

Verzeichnisse durchsuchen - Dateien ändern

Verzeichnisse durchsuchen - Dateien ändern
01.12.2006 11:00:39
Dr.
Hi zusammen,
ich möchte via VBA ein Verzeichnis inkl. vorhandener Unterverzeichnisse durchsuchen, alle sich dort befindlichen Dateien öffnen, "etwas tun", und wieder schließen.
Das "etwas tun" kann ich, mit dem anderen tue ich mich aber schwer und hoffe auf einen Ansatz.
Besten Dank im voraus!

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verzeichnisse durchsuchen - Dateien ändern
01.12.2006 11:24:31
IngGi
Hallo Dr.,
das geht mit dem rekursiven Aufruf einer Prozedur, d.h. die Prozedur ruft sich selbst immer wieder auf, solange im aktuellen Verzeichnis mindestens ein Unterverzeichnis existiert.

Option Explicit
Dim fso As Object
Dim fo As Object
Dim sf As Object
Dim f As Object
Sub test()
Set fso = CreateObject("Scripting.FileSystemObject")
Set fo = fso.getfolder("C:\Temp")
Rekursiver_Aufruf
End Sub
Sub Rekursiver_Aufruf()
For Each f In fo.Files
   If Right(f.Name, 4) = ".xls" Then
      Workbooks.Open (f.Path)
      'hier dein Code für "etwas tun"
      ActiveWorkbook.Close True
   End If
Next 'f
For Each sf In fo.subfolders
   Set fo = sf
   Rekursiver_Aufruf
Next 'sf
End Sub

Gruß Ingolf
Anzeige
AW: Verzeichnisse durchsuchen - Dateien ändern
01.12.2006 11:28:17
Dr.
Hallo Ingolf,
besten Dank, das werde ich ausprobieren!
AW: Verzeichnisse durchsuchen - Dateien ändern
01.12.2006 11:26:39
haw
Hallo Doc,
hier ein Beispiel zum Einlesen und Listen von mp3-Dateien:

Sub Listen()
Dim sSource$, iCount%, iCounter%
Dim wks As Worksheet
'Startverzeichnis wählen
sSource = VerzeichnisWählen()
ChDrive Left(sSource, 1)
ChDir sSource
Set wks = ThisWorkbook.Worksheets("mp3")
wks.Range("A3:G50000").Clear
With Application.FileSearch
.NewSearch
.LookIn = sSource
.Filename = "*.mp3"
.SearchSubFolders = True
.Execute
iCount = .FoundFiles.Count
For iCounter = 1 To iCount
wks.Range("C1").Value = "Bearbeite Datei Nr. " & iCounter & "..."
wks.Cells(iCounter + 2, 2).Value = .FoundFiles(iCounter)
wks.Hyperlinks.Add Anchor:=wks.Cells(iCounter + 2, 2), Address:=.FoundFiles(iCounter)
wks.Cells(iCounter + 2, 3).Value = Dir(.FoundFiles(iCounter))
wks.Cells(iCounter + 2, 4).Value = (FileLen(.FoundFiles(iCounter))) / 1024 / 1024
'         wks.Cells(iCounter + 2, 6).Value = FileDateTime(.FoundFiles(iCounter))
Next iCounter
End With
Application.StatusBar = False
End Sub

Gruß
Heinz
Anzeige
AW: Verzeichnisse durchsuchen - Dateien ändern
01.12.2006 11:31:46
haw
Hallo Doc
hier noch eine andere Möglichkeit und die fehlende Funktion zur Ordnerauswahl

Sub Listen()
Dim sSource$, iCount%, iCounter%
Dim wks As Worksheet
'Startverzeichnis wählen
sSource = VerzeichnisWählen()
ChDrive Left(sSource, 1)
ChDir sSource
With Application.FileSearch
.NewSearch
.LookIn = sSource
.Filename = "*.xls"
.SearchSubFolders = True
.Execute
iCount = .FoundFiles.Count
For iCounter = 1 To iCount
Workbooks.Open Filename:=.FoundFiles(iCounter)
Set wb = ActiveWorkbook
wb.Worksheets(1).Range("A1").Value = "erledigt"
Next iCounter
End With
End Sub

Public

Function VerzeichnisWählen() As String
Dim Ret As Long
Dim Browse As BROWSEINFO
Dim Liste As Long
Dim Pfad As String, wPos As Integer
Browse.lpszTitle = "Bitte ein Startverzeichnis wählen"
Browse.ulFlags = BIF_RETURNONLYFSDIRS
Liste = SHBrowseForFolder(Browse)
Pfad = String(1024, 0)
Ret = SHGetPathFromIDList(ByVal Liste, ByVal Pfad)
If Ret Then
VerzeichnisWählen = NullTrimmen(Pfad)
End If
End Function

Gruß
Heinz
Anzeige
AW: Verzeichnisse durchsuchen - Dateien ändern
01.12.2006 11:48:58
Dr.
Auch Dir herzlichen Dank! Mit drei verschiedenen Ansätzen sollte das zu schaffen sein.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige