Amit hat einen Ordner, der Hunderte von Excel-Arbeitsmappen enthält. Er muss alle Arbeitsmappen nach einem bestimmten Text durchsuchen und fragt sich, ob es eine Möglichkeit gibt, alle Arbeitsmappen zu durchsuchen und die Namen der Arbeitsmappen zu ermitteln, die den gewünschten Text enthalten, sowie die Zellen in den Arbeitsmappen, die diesen Text enthalten.

Es ist relativ einfach herauszufinden, welche Arbeitsmappen den gewünschten Text enthalten. Sie müssen lediglich die Suchfunktionen von Windows verwenden, um in einem einzelnen Ordner nach Dateien zu suchen, die den gewünschten Text enthalten. Die Zellenpositionen werden zwar nicht angezeigt, die Liste der Dateien wird jedoch angezeigt.

Natürlich können Sie ein Makro verwenden, um nach Ihnen zu suchen. (Es ist immer eine gute Idee, ein Makro zu verwenden, um die lange, mühsame Arbeit zu erledigen, die sonst manuell erledigt würde.) Im Folgenden werden alle Arbeitsmappen in einem Ordner durchgearbeitet und nach dem gesucht, was Sie suchen möchten. Es öffnet jede Datei, die auf xls * endet (das nachfolgende Sternchen bedeutet, dass nach xls-, xlsx- und xlsm-Dateien gesucht wird).

Sub SearchFolders()

Dim fso As Object     Dim fld As Object     Dim strSearch As String     Dim strPath As String     Dim strFile As String     Dim wOut As Worksheet     Dim wbk As Workbook     Dim wks As Worksheet     Dim lRow As Long     Dim rFound As Range     Dim strFirstAddress As String

On Error GoTo ErrHandler     Application.ScreenUpdating = False

'Change as desired     strPath = "c:\MyFolder"

strSearch = "Specific text"



Set wOut = Worksheets.Add     lRow = 1     With wOut         .Cells(lRow, 1) = "Workbook"

.Cells(lRow, 2) = "Worksheet"

.Cells(lRow, 3) = "Cell"

.Cells(lRow, 4) = "Text in Cell"

Set fso = CreateObject("Scripting.FileSystemObject")

Set fld = fso.GetFolder(strPath)



strFile = Dir(strPath & "\.xls")

Do While strFile <> ""

Set wbk = Workbooks.Open _               (Filename:=strPath & "\" & strFile, _               UpdateLinks:=0, _               ReadOnly:=True, _               AddToMRU:=False)



For Each wks In wbk.Worksheets                 Set rFound = wks.UsedRange.Find(strSearch)

If Not rFound Is Nothing Then                     strFirstAddress = rFound.Address                 End If                 Do                     If rFound Is Nothing Then                         Exit Do                     Else                         lRow = lRow + 1                         .Cells(lRow, 1) = wbk.Name                         .Cells(lRow, 2) = wks.Name                         .Cells(lRow, 3) = rFound.Address                         .Cells(lRow, 4) = rFound.Value                     End If                     Set rFound = wks.Cells.FindNext(After:=rFound)

Loop While strFirstAddress <> rFound.Address             Next

wbk.Close (False)

strFile = Dir         Loop         .Columns("A:D").EntireColumn.AutoFit     End With     MsgBox "Done"



ExitHandler:

Set wOut = Nothing     Set wks = Nothing     Set wbk = Nothing     Set fld = Nothing     Set fso = Nothing     Application.ScreenUpdating = True     Exit Sub

ErrHandler:

MsgBox Err.Description, vbExclamation     Resume ExitHandler End Sub

Um die Routine an Ihre Bedürfnisse anzupassen, ändern Sie die Variable strPath, um den Pfad zu dem Ordner wiederzugeben, den Sie verarbeiten möchten, und ändern Sie strSearch, um den Text wiederzugeben, nach dem Sie suchen. Das Makro erstellt ein neues Arbeitsblatt und platziert „Treffer“ in jeder Zeile. Spalte A enthält den Arbeitsmappennamen, Spalte B den Arbeitsblattnamen, Spalte C die Zellenadresse und Spalte D den Inhalt dieser Zelle.

Offensichtlich braucht jedes Makro wie dieses ziemlich viel Zeit, um ausgeführt zu werden. Sie können die Zeit etwas verkürzen, indem Sie die Anzahl der zu durchsuchenden Dateien reduzieren. Der beste Weg, dies zu tun, ist die Verwendung des Windows-Suchansatzes (am Anfang dieses Tipps beschrieben), um die Arbeitsmappen zu identifizieren, in denen sich der gewünschte Text befindet. Verschieben Sie diese Arbeitsmappen in ihren eigenen Ordner und führen Sie dann die Makrosuche in diesem Ordner durch.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (5598) gilt für Microsoft Excel 97, 2000, 2002 und 2003.