Hallo zusammen,
Ich weiß nich recht, ob ich mit der Frage hier richtig bin, aber ich hau sie einfach mal raus ... :19:
Es geht um die Suche nach xls-Datei-Inhalten im Windows-Explorer (Win10).
Mit "normalen" Dateien (also meinetwegen ne einfache Liste ohne großen Schnick-Schnack) funktioniert das ja: man gibt in das Explorer-Suchfeld den Suchbegriff ein und die xls-Dateien, in denen dieser Begriff enthalten is, werden angezeigt.
So weit, so gut.
Jetzt bin ich aber über das Problem gestolpert, dass diese Suche NICHT funktioniert, wenn es sich dabei um xls-Dateien mit Formularcharakter (also gesperrtes Arbeitsblatt und nur bestimmte Zellen beschreibbar und integrierten Makros) handelt.
Ist das wirklich generell so oder kann das auch an der "Uralt"-Version meines Excel (2002) liegen?
Ich bräuchte da dringend eine Lösung, denn es handelt sich um Prüfprotokolle, in denen Seriennummern enthalten sind, und wir müssen manchmal nach eben diesen Seriennummern Nachforschungen betreiben und da macht es sich echt umständlich, erst jeden einzelne Datei (bei inzwischen über 60!) zu öffnen ...
Besten Dank für Hilfe vorweg!
Grüße
icke63
Hallo,
ich schätze mal, dass die Windows Explorer Suche an die Daten nicht dran kommt, da ja in der Excel-Datei gesperrt.
Das erscheint mir logisch, da ja sonst etwas gesucht werden könnte, was verborgen sein soll. Der Windows Explorer
macht z.B. in der Vorschau ein Excel-Objekt auf. Ähnlich dürfte das möglicherweise die Suche machen.
Von daher würde ich sagen, entweder die Dateien freischalten oder vielleicht eine Excel Datei mit VBA Makros erstellen,
die die Dateien öffnet, ggf. entschützt, durchsucht, und schließt.
Gruß
Hi maninweb,
danke mal für deine Antwort :19:
Naja, ganz so logisch erscheint mir das nich, denn die besagten Seriennummern, nach denen ich suchen will, ohne dass ich erst jede Datei öffnen muss, werden ja in den beschreibbaren offenen Formularfeldern eingetragen, die auch nach dem Speichern weiter beschreibbar bleiben und nich gesperrt werden.
Ausserdem is mir neu, dass der Explorer Office-Dateien in der Vorschau anzeigen würde. Bei pdf und jpg bekomm ich die, aber eben nich bei doc oder xls ...
Das "... Excel Datei mit VBA Makros erstellen, die die Dateien öffnet, ggf. entschützt, durchsucht, und schließt. ..." is n netter Vorschlag, aber nur für jemand, der sich damit auskennt ... und das trifft auf mich nur sehr bedingt zu :20:
Grüße
Hallo,
das mit einem Makro zu lösen müsste machbar sein. Was mich betrifft, habe ich aktuell jedoch leider keine Zeit dazu.
Vielleicht später, wenn's nicht schnell sein muss. Aber das möge niemand anderes hier im Forum hindern, aktiv zu werden
Community Power eben.
Gruß
(04.08.2020, 15:59)maninweb schrieb: [ -> ]Hallo,
das mit einem Makro zu lösen müsste machbar sein. Was mich betrifft, habe ich aktuell jedoch leider keine Zeit dazu.
Vielleicht später, wenn's nicht schnell sein muss. Aber das möge niemand anderes hier im Forum hindern, aktiv zu werden
Community Power eben.
Gruß
vielen Dank für das Angebot
neee, momentan hat´s keine Eile, aber wie du sagtest: ich hab nix dagegen, wenn sich jemand anderes hier im Forum damit befaßt ... :19:
Grüße
Hallo,
ich weiß nicht, ob nachfolgende Routine den Suchbegriff in den entsprechenden Formularfeldern findet und der code auf Deinem alten Excel funktioniert (sollte es aber). Auf jeden Fall soll das Tool alle Exceldateien in einem Ordner nach einem Suchbegriff durchsuchen und das Ergebnis in Tabelle1 auflisten. Sicherlich noch erweiterbar, auch bzgl. Fehlerabfang und auch nur kurz getestet
Aber probiere es einfach mal aus:
Option Explicit
Sub Suche_in_allen_Dateien()
Dim sSuch As String, iOutZeile As Long
Dim WkB As Workbook, WSh As Worksheet
Dim oRange As Range
Dim sFirstAddress As String
Dim sPathname As String, sFilename As String
sPathname = "C:\Users\voltm\Desktop\" '<<<anpassen>>>
sFilename = Dir(sPathname & "*.xls*") 'Nur Excel-Dateien ggf. anpassen
sSuch = InputBox("Suchbegriff eingeben")
If StrPtr(sSuch) = 0 Then Exit Sub
If sSuch = "" Then Exit Sub
iOutZeile = 2
With ThisWorkbook.Sheets("Tabelle1")
.Cells.ClearContents
.Cells(1, "A").Value = "Mappe"
.Cells(1, "B").Value = "Tabelle"
.Cells(1, "C").Value = "Zelle"
.Cells(2, "A").Value = "Suchbegriff '" & sSuch & "' wurde nicht gefunden!"
End With
'Alle Dateien entsprechend der Dir-Maske im Pfad durchgehen
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
Do While sFilename <> ""
Set WkB = GetObject(PathName:=sPathname & sFilename)
If Not WkB Is Nothing Then
Application.StatusBar = WkB.Name & " wird gerade durchsucht"
For Each WSh In WkB.Worksheets
With WSh
Set oRange = .Cells.Find(What:=sSuch, _
After:=.Cells(.Rows.Count, .Columns.Count), _
LookIn:=xlFormulas, LookAt:=xlWhole, MatchCase:=True)
If Not oRange Is Nothing Then
sFirstAddress = oRange.Address
Do
'Suche erfolgreich
With ThisWorkbook.Sheets("Tabelle1")
.Cells(iOutZeile, "A").Value = WkB.Name
.Cells(iOutZeile, "B").Value = WSh.Name
.Cells(iOutZeile, "C").Value = oRange.Address
End With
iOutZeile = iOutZeile + 1
DoEvents
Set oRange = .Cells.FindNext(oRange)
Loop Until oRange.Address = sFirstAddress
Set oRange = Nothing
End If
End With
Next WSh
WkB.Close savechanges:=False 'Schließen, ohne zu speichern
Set WkB = Nothing
End If
sFilename = Dir
Loop
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
MsgBox "Bin fertig!", vbInformation, "Suchbegriff suchen"
End Sub
viele Grüße aus Freigericht
Karl-Heinz
Hallo,
kleines Update:
Option Explicit
Sub Suche_in_allen_Dateien()
Dim sSuch As String, iOutZeile As Long
Dim iAnz As Integer, iWie As Integer
Dim WkB As Workbook, WSh As Worksheet
Dim oRange As Range
Dim sFirstAddress As String
Dim sPathname As String, sFilename As String
sPathname = "C:\Users\voltm\Desktop\" '<<<anpassen>>>
sSuch = InputBox("Suchbegriff eingeben")
If StrPtr(sSuch) = 0 Then Exit Sub
If sSuch = "" Then Exit Sub
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
iOutZeile = 2
With ThisWorkbook.Sheets("Tabelle1")
.Cells.ClearContents
.Cells(1, "A").Value = "Mappe"
.Cells(1, "B").Value = "Tabelle"
.Cells(1, "C").Value = "Zelle"
.Cells(2, "A").Value = "Suchbegriff '" & sSuch & "' wurde nicht gefunden!"
End With
'Alle Dateien entsprechend der Dir-Maske im Pfad durchgehen
sFilename = Dir(sPathname & "*.xls*") 'Nur Excel-Dateien ggf. anpassen
Do While sFilename <> ""
Set WkB = GetObject(PathName:=sPathname & sFilename)
If Not WkB Is Nothing Then
Application.StatusBar = WkB.Name & " wird gerade durchsucht"
For Each WSh In WkB.Worksheets
With WSh
If Right(sSuch, 1) = "*" Then
iWie = xlPart
Else
iWie = xlWhole
End If
Set oRange = .Cells.Find(What:=sSuch, _
After:=.Cells(.Rows.Count, .Columns.Count), _
LookIn:=xlFormulas, LookAt:=iWie, MatchCase:=True)
If Not oRange Is Nothing Then
sFirstAddress = oRange.Address
Do
'Suche erfolgreich
With ThisWorkbook.Sheets("Tabelle1")
.Cells(iOutZeile, "A").Value = WkB.Name
.Cells(iOutZeile, "B").Value = WSh.Name
.Cells(iOutZeile, "C").Value = oRange.Address
End With
iOutZeile = iOutZeile + 1
iAnz = iAnz + 1
DoEvents
Set oRange = .Cells.FindNext(oRange)
Loop Until oRange.Address = sFirstAddress
Set oRange = Nothing
End If
End With
Next WSh
WkB.Close savechanges:=False 'Schließen, ohne zu speichern
Set WkB = Nothing
End If
sFilename = Dir
Loop
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
MsgBox "Habe " & (iAnz) & " Treffer gefunden!", vbInformation, "Suchbegriff suchen"
End Sub
viele Grüße aus Freigericht
Karl-Heinz