Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

Thema

XL-Dateien aus Haupt- und Unterverzeichnissen einlesen

Gruppe

Verzeichnis

Problem

Wie kann ich alle Excel-Dateien des aktuellen Verzeichnisses einschliesslich aller Unterverzeichnisse in ein Tabellenblatt einlesen lassen?

Lösung
Geben Sie den nachfolgenden Code in ein Standardmodul ein und weisen Sie ihn einer Schaltfläche zu.

StandardModule: basMain

Public Const PROCESS_QUERY_INFORMATION = &H400
Public Const WAIT_TIMEOUT = &H102&

Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
    ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _
    ByVal dwMilliseconds As Long) As Long

Sub DOSShell()
   Dim sFile As String, sPath As String
   sPath = Range("B1").Value
   sFile = Application.DefaultFilePath & "\dirlist.txt"
   WartenBisFertig ("command.com /c dir/s/b " & sPath & "\*.xls >" & sFile)
   Workbooks.Open sFile
   Columns.AutoFit
End Sub

Sub WartenBisFertig(strEXE As String)
   Dim ProcessID As Long
   Dim hProcess As Long
   Dim RetVal As Long
   ProcessID = Shell(strEXE, vbHide)
   hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessID)
   Do
      DoEvents
      RetVal = WaitForSingleObject(hProcess, 50)
   Loop Until RetVal <> WAIT_TIMEOUT
End Sub