Explorer-Suche
#1
Wink 
Hallo zusammen,

Ich weiß nich recht, ob ich mit der Frage hier richtig bin, aber ich hau sie einfach mal raus ...  :19: Angel

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 ...  Huh

Besten Dank für Hilfe vorweg!
Grüße
icke63
Top
#2
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ß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Top
#3
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
Top
#4
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ß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Top
#5
Wink 
(04.08.2020, 16: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  Thumbsupsmileyanim

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
Top
#6
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
Top
#7
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
Top
#8
@Volti

guten Morgen und vielen Dank ... ich werd´s gleich mal ausprobieren  Blush Thumbsupsmileyanim

Grüße
Top
#9
(05.08.2020, 08:52)icke63 schrieb: @Volti

guten Morgen und vielen Dank ... ich werd´s gleich mal ausprobieren  Blush Thumbsupsmileyanim

Grüße


hhhmmm ...  Huh

egal ob ich in nen Begriff eingeb, der in einer  Datei mit definitiv nicht gesperrten oder in einer Datei mit gesperrten Feldern enthalten ist (ich hab natürlich vorher geschaut, welche Suchbegriffe enthalten sein können und das Suchverzeichnis geändert  :19:), das Ergebnis is bis jetze immer:

Siehe Anhang!



oder ähnlich halt ... je nach Begriff (egal ob Wort oder Zahl)
ich würde mal sagen "irgendetwas stimmt da nicht" ... wobei ich ja sehe, dass Makro als solches tut seineen Job, meckert nich rum oder spuckt irgendwelche kryptischen Fehlermeldungen aus ...  :20: 
wird´s wohl an mir liegen, dass ich da irgendwas verkehrt mache ...

Grüße


Angehängte Dateien Thumbnail(s)
   
Top
#10
Ja, das Bildchen zeigt die Startparameter.
Zelle A2 würde bei Fund des Suchbegriffs mit den entsprechenden Daten überschrieben werden.

Ohne die wirklichen Dateien usw. ist es schwierig irgendwas dazu zu sagen. Da bleibt eigentlich nur, mal im Einzelschritt eine Datei durchlaufen zu lassen.
In der Statusbar werden die bearbeiteten Dateien angezeigt. 
Erste Prüfung: Werden da alle Dateien angezeigt.
Zweite Prüfung: Wird Datei geöffnet und kommt der code beim Punt Find an....
Dritte Prüfung: Durchsucht werden die Sheets, nicht irgendwelche Userforms...

Lade doch mal eine von den zu durchsuchenden Dateien hier hoch, dann kann man da mal schauen. 

viele Grüße
Karl-Heinz
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste