Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1916to1920
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
Nach Zellen Inhalt suchen
21.01.2023 13:05:20
Marcus
Hallo zusammen,
habe jetzt die Codes von Nepumuk bekommen um nach Dateinamen zu suchen. Läuft.
Tja wenn da nicht meine netten Kollegen wären und sich dachten wir ändern die Namen der Datei in dem Mitgliedsnamen um.
Jetzt habe ich das Problem das die Dateien zwar vorhanden sind aber unterschiedlich heissen.
Jetzt wäre meine Frage ist es möglich, wie folgt zu suchen:
Excel-Dateien xls und xlsm
Zelle C1
Zellen Inhalt Bestellung
und hierauf dann einen Link zu den Quell-Dateien?
Hoffe ich konnte es erklären
Gruß
Marcus

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nach Zellen Inhalt suchen
21.01.2023 13:41:26
Nepumuk
Hallo Marcus,
das mit Spalte C habe ich nicht verstanden. Kannst du das mal näher erläutern?
Gruß
Nepumuk
AW: Nach Zellen Inhalt suchen
21.01.2023 18:12:20
Marcus
Hallo Nepumuk,
wie immer vergesse ich was.
Also die Kollegen haben zwar die richtige Vorlage benutzt, aber den Dateinamen von Bestellung auf den jeweiligen Namen des Mitglieds abgeändert, deswegen konnte ich mit deinem Code nicht alle finden. Auch über den Explorer habe ich nicht alle gefunden, daher bin ich in die Ordner rein und per Hand gesucht und siehe da - so habe ich den Fehler gefunden.
Da die Kollegen die Vorlage nicht abgeändert haben, seht in jeder Datei im Tabellenblatt1 und hier in C1 das Wort Bestellung.
Jetzt wäre meine Frage, kann ich alle Dateien (nur Excel) nach dem Wort Bestellung in C1 suchen lassen und mir dann einen Link auf die Datei ausgeben lassen?
Also er soll nicht mehr nach dem Dateinamen suchen sondern nach dem Zellenwert in C1 vom Tabelenblatt1?
Ist das überhaupt möglich?
Gruß Marcus
Anzeige
AW: Nach Zellen Inhalt suchen
21.01.2023 18:30:40
Nepumuk
Hallo Marcus,
teste mal:
Public Sub SearchFiles()
    Dim wksInhalt As Worksheet
    Dim objWorkbook As Workbook
    Dim objFileSearch As clsFileSearch
    Dim ialngIndex As Long, lngFileCount As Long, lngRow As Long
    Dim strFolder As String, strSearch As String
    With ThisWorkbook.Worksheets("Start")
        strFolder = .Cells(1, 2).Text
        strSearch = .Cells(1, 3).Text
    End With
    If strFolder = "" Then
        With Application.FileDialog(msoFileDialogFolderPicker)
            .InitialFileName = "C:\"  'anpassen
            If .Show Then
                strFolder = .SelectedItems(1)
            Else
                Exit Sub
            End If
        End With
    End If
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With
    lngRow = 2
    For Each wksInhalt In ThisWorkbook.Worksheets
        If wksInhalt.Name = "Inhalt" Then Exit For
    Next
    If wksInhalt Is Nothing Then
        Set wksInhalt = Worksheets.Add
        wksInhalt.Name = "Inhalt"
    End If
    With wksInhalt
        Call .Activate
        Call .Columns("A:C").Clear
        With .Range("A1:B1")
            .Value = Array("Pfad", "Dateiname")
            .Font.Bold = True
        End With
    End With
    Set objFileSearch = New clsFileSearch
    With objFileSearch
        .CaseSenstiv = False
        .Extension = "*.xls*"
        .FolderPath = strFolder
        .SearchLike = "*"
        .SubFolders = True
        lngFileCount = .Execute(Sort_by_Path, Sort_Order_Ascending)
        For ialngIndex = 1 To lngFileCount
            Set objWorkbook = GetObject(PathName:=.Files(ialngIndex).Path)
            If objWorkbook.Worksheets(1).Cells(1, 3).Text = strSearch Then
                wksInhalt.Cells(lngRow, 1).Value = .Files(ialngIndex).Path
                Call wksInhalt.Hyperlinks.Add(Anchor:=wksInhalt.Cells(lngRow, 2), _
                    Address:=.Files(ialngIndex).Path, TextToDisplay:=.Files(ialngIndex).Filename)
                lngRow = lngRow + 1
            End If
            Call objWorkbook.Close
        Next
    End With
    Call wksInhalt.Columns.AutoFit
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
    Set objFileSearch = Nothing
    Set wksInhalt = Nothing
    Set objWorkbook = Nothing
End Sub
Gruß
Nepumuk
Anzeige
AW: Nach Zellen Inhalt suchen
21.01.2023 18:42:13
Marcus
Hallo Nepumuk,
danke für die Arbeit
bei der Zeile meldet er Dim objFileSearch As clsFileSearch, Benutzerdefinierter Typ nicht definiert.
An was kann das liegen?
Danke im voraus für die deine Zeit und Hilfe
Marcus
AW: Nach Zellen Inhalt suchen
21.01.2023 18:45:01
Nepumuk
Hallo Marcus,
füge den Code in dieselbe Mappe ein, in welcher der letzte Code steht.
Gruß
Nepumuk
AW: Nach Zellen Inhalt suchen
21.01.2023 19:25:43
Marcus
@Nepumuk
habe den Code von dir im Modul ausgetauscht, wenn ich ihn jetzt ablaufen lasse, springt er gleich zum - in welchem Ordner soll gesucht werden.
Ich kann vorher nirgends den Suchwert, also den Inhalt im Zielblatt C1 eingeben
Hab ich da was falsch kopiert?
Gruß
Marcus
Anzeige
AW: Nach Zellen Inhalt suchen
21.01.2023 20:05:56
Nepumuk
Hallo Marcus,
du wolltest, dass der Suchbegriff Zelle C1 der "Start"-Tabelle steht. Oder nicht?
Dann so:
Public Sub SearchFiles()
    Dim wksInhalt As Worksheet
    Dim objWorkbook As Workbook
    Dim objFileSearch As clsFileSearch
    Dim ialngIndex As Long, lngFileCount As Long, lngRow As Long
    Dim strFolder As String, strSearch As String
    strSearch = InputBox("Suchbegriff?", "Eingabe")
    If StrPtr(strSearch) Then Exit Sub
    strFolder = ThisWorkbook.Worksheets("Start").Cells(1, 2).Text
    If strFolder = "" Then
        With Application.FileDialog(msoFileDialogFolderPicker)
            .InitialFileName = "C:\"  'anpassen
            If .Show Then
                strFolder = .SelectedItems(1)
            Else
                Exit Sub
            End If
        End With
    End If
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With
    lngRow = 2
    For Each wksInhalt In ThisWorkbook.Worksheets
        If wksInhalt.Name = "Inhalt" Then Exit For
    Next
    If wksInhalt Is Nothing Then
        Set wksInhalt = Worksheets.Add
        wksInhalt.Name = "Inhalt"
    End If
    With wksInhalt
        Call .Activate
        Call .Columns("A:C").Clear
        With .Range("A1:B1")
            .Value = Array("Pfad", "Dateiname")
            .Font.Bold = True
        End With
    End With
    Set objFileSearch = New clsFileSearch
    With objFileSearch
        .CaseSenstiv = False
        .Extension = "*.xls*"
        .FolderPath = strFolder
        .SearchLike = "*"
        .SubFolders = True
        lngFileCount = .Execute(Sort_by_Path, Sort_Order_Ascending)
        For ialngIndex = 1 To lngFileCount
            Set objWorkbook = GetObject(PathName:=.Files(ialngIndex).Path)
            If objWorkbook.Worksheets(1).Cells(1, 3).Text = strSearch Then
                wksInhalt.Cells(lngRow, 1).Value = .Files(ialngIndex).Path
                Call wksInhalt.Hyperlinks.Add(Anchor:=wksInhalt.Cells(lngRow, 2), _
                    Address:=.Files(ialngIndex).Path, TextToDisplay:=.Files(ialngIndex).Filename)
                lngRow = lngRow + 1
            End If
            Call objWorkbook.Close
        Next
    End With
    Call wksInhalt.Columns.AutoFit
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
    Set objFileSearch = Nothing
    Set wksInhalt = Nothing
    Set objWorkbook = Nothing
End Sub
Gruß
Nepumuk
Anzeige
AW: Nach Zellen Inhalt suchen
21.01.2023 21:17:05
Marcus
@Nepumuk
das ist genau das was ich meinte - ICH un erklären - das passt nicht. lol
Im ersten Post von mir war der Wunsch.
Alle Dateien auflisten mit dem Namen "Bestellungen" im Dateinamen.
Code von perfekt alles einwandfrei
Im zweiten Post, war mein Wunsch, ob die Möglichkeit besteht.
Nicht nach dem Wort Bestellung im Dateinamen zu suchen.
Sondern das Wort Bestellung in der Datei selbst zu suchen und bei einem Treffer, bitte einen Link auf die Datei.
Hintergrund: meine Vereinskollegen haben die Dateinamen umbenannt und zwar mit den Namen der Mitglieder, jetzt steht im Namen nicht mehr Bestellung.
Aber in der Datei steht in der Tabelle1 in der Zelle C1 drin und das war mein Vorschlag ob ich nach dem suchen lassen kann.
Tut mir leid, das ich so unfähig bin zum erklären.
Mit dem letzte Code von dir (habe den in dem alten ausgetauscht) fragt er mich zwar nach einem Suchwort aber nach keinem Pfad und somit findet er auch nichts.
Hoffe du bist nicht sauer.
Dankeschön für die Hilfe und Zeit - und GEDULD
Marcus
Anzeige
AW: Nach Zellen Inhalt suchen
21.01.2023 21:22:58
Marcus
Ergänzung
Aber in der Datei steht in der Tabelle1 in der Zelle C1 der Suchwert "Bestellung" drin und das war mein Vorschlag ob ich nach dem suchen lassen kann.
AW: Nach Zellen Inhalt suchen
22.01.2023 04:08:52
Nepumuk
Hallo Marcus,
mein Fehler, da war eine falsche Abfrage drin. Jetzt gib mal als Suchbegriff Bestellung ein:
Option Explicit
Option Compare Text
Public Enum SORT_BY
    Sort_by_None
    Sort_by_Name
    Sort_by_Path
    Sort_by_Size
    Sort_by_Last_Access
    Sort_by_Last_Modyfy
    Sort_by_Date_Create
End Enum
Public Enum SORT_ORDER
    Sort_Order_Ascending
    Sort_Order_Descending
End Enum
Public Type FILEINFO
    Filename As String
    Path As String
    Size As Long
    LastAccess As Date
    LastModify As Date
    DateCreate As Date
End Type
Public Sub SearchFiles()
    Dim wksInhalt As Worksheet
    Dim objWorkbook As Workbook
    Dim objFileSearch As clsFileSearch
    Dim ialngIndex As Long, lngFileCount As Long, lngRow As Long
    Dim strFolder As String, strSearch As String
    strSearch = InputBox("Suchbegriff?", "Eingabe")
    If StrPtr(strSearch) = 0 Then Exit Sub
    strFolder = ThisWorkbook.Worksheets("Start").Cells(1, 2).Text
    If strFolder = "" Then
        With Application.FileDialog(msoFileDialogFolderPicker)
            .InitialFileName = "C:\"  'anpassen
            If .Show Then
                strFolder = .SelectedItems(1)
            Else
                Exit Sub
            End If
        End With
    End If
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With
    lngRow = 2
    For Each wksInhalt In ThisWorkbook.Worksheets
        If wksInhalt.Name = "Inhalt" Then Exit For
    Next
    If wksInhalt Is Nothing Then
        Set wksInhalt = Worksheets.Add
        wksInhalt.Name = "Inhalt"
    End If
    With wksInhalt
        Call .Activate
        Call .Columns("A:C").Clear
        With .Range("A1:B1")
            .Value = Array("Pfad", "Dateiname")
            .Font.Bold = True
        End With
    End With
    Set objFileSearch = New clsFileSearch
    With objFileSearch
        .CaseSenstiv = False
        .Extension = "*.xls*"
        .FolderPath = strFolder
        .SearchLike = "*"
        .SubFolders = True
        lngFileCount = .Execute(Sort_by_Path, Sort_Order_Ascending)
        For ialngIndex = 1 To lngFileCount
            If Left$(.Files(ialngIndex).Filename, 2) > "~$" Then
                Set objWorkbook = GetObject(PathName:=.Files(ialngIndex).Path)
                If objWorkbook.Worksheets(1).Cells(1, 3).Text = strSearch Then
                    wksInhalt.Cells(lngRow, 1).Value = .Files(ialngIndex).Path
                    Call wksInhalt.Hyperlinks.Add(Anchor:=wksInhalt.Cells(lngRow, 2), _
                        Address:=.Files(ialngIndex).Path, TextToDisplay:=.Files(ialngIndex).Filename)
                    lngRow = lngRow + 1
                End If
            Call objWorkbook.Close(SaveChanges:=False)
            End If
        Next
    End With
    Call wksInhalt.Columns.AutoFit
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
    Set objFileSearch = Nothing
    Set wksInhalt = Nothing
    Set objWorkbook = Nothing
End Sub
Gruß
Nepumuk
Anzeige
dickes Dankeschön
22.01.2023 11:06:20
Marcus
@Nepumuk,
was soll ich sagen - DANKESCHÖN
Rennt wie ein Maschinengewehr. Perfekt
mit beiden Codes habe ich jetzt 100% aller Dateien.
5 Stück doppelt ( weil Bestellung im Namen und in der Datei vorkommt)
Gott 100h gespart
schönen Sonntag, ich habe jtzt einen
Marcus

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige