Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Dateien durchsuchen und Ergebnis in Listbox auflis

Betrifft: Dateien durchsuchen und Ergebnis in Listbox auflis von: andreas
Geschrieben am: 09.04.2014 18:42:37

Hallo Gemeinde,

mit nachfolgendem Code kann ich eine Exceltabelle durchsuchen und das Ergebnis in einer Listbox auflisten.
Wie kann ich die Suche auf alle Exceltabellen in einem Verzeichnis erweitern?

Danke für eure Hilfe.
andreas

' Suche nach Kontentext und anzeige in einer Listbox,
' nach Auswahl eines Kontos springen in die Tabellenzeile




Private Sub cmdsuchtext_Click()
  Dim zeile As Integer
  Dim spalte As Integer
  Dim laenge As Integer
  Dim suchtext As String
  Dim letzte_zeile As Integer
  Dim letzte_spalte As Integer
  zeile = ActiveCell.Row
  spalte = ActiveCell.Column
  
' Update des Fenster ausschalten
  Application.ScreenUpdating = False

' Listbox leeren
  frmsuchtext.lsterg.Clear
' Letzte Zeile ermitteln
letzte_spalte = ActiveSheet.UsedRange.Columns.Count
letzte_zeile = ActiveSheet.UsedRange.Rows.Count
  
   
    Cells(2, 1).Activate
' Länge des zu suchenden Strings ermitteln
    laenge = Len(txtsuchtext.Text)
    If laenge = 0 Then
      MsgBox "Sie müssen einen Suchtext eingeben!", vbOKOnly + vbInformation, "Fehler"
' Update des Fenster einschalten
      Application.ScreenUpdating = True
      Exit Sub
    End If

Dim i As Integer
    While ActiveCell.Row <= letzte_zeile
      If Cells(ActiveCell.Row, 1) <> "" Then
'string_bilden
        If InStr(1, UCase(such_string), UCase(txtsuchtext.Text)) > 0 Then
' Listbox füllen
          suchtext = Cells(ActiveCell.Row, 2).Value & ", " & Cells(ActiveCell.Row, 3).Value
          frmsuchtext.lsterg.AddItem suchtext
          frmsuchtext.lsterg.List(lsterg.ListCount - 1, 1) = ActiveCell.Row
        End If

End If
Cells(ActiveCell.Row + 1, 1).Activate
    Wend

    If lsterg.ListCount = 0 Then
        MsgBox "Es gibt keine Texte zu der Eingabe:" & txtsuchtext.Text & "!", vbOKOnly +  _
vbInformation, "Fehler"
        lblerg.Caption = "Suchergebnis:"
    Else
      lblerg.Caption = "Es wurden " & lsterg.ListCount & " Textstellen gefunden"
    End If
' Gehe an die Position vor der Suche
    Cells(zeile, spalte).Activate
' Update des Fenster einschalten
    Application.ScreenUpdating = True
' Text im eingabefeld markieren und Focus draufsetzen
    If Len(txtsuchtext.Text) > 0 Then
      txtsuchtext.SelStart = 0
      txtsuchtext.SelLength = Len(txtsuchtext.Text)
    End If
    txtsuchtext.SetFocus
    
End Sub

  

Betrifft: AW: Dateien durchsuchen und Ergebnis in Listbox auflis von: Hajo_Zi
Geschrieben am: 10.04.2014 06:41:09

Ordner auslesen.
http://hajo-excel.de/chCounter3/getfile.php?id=21

GrußformelHomepage


  

Betrifft: AW: Dateien durchsuchen und Ergebnis in Listbox auflis von: andreas
Geschrieben am: 10.04.2014 18:35:10

Hallo Hajo,

danke für die Hilfe. Ist aber nicht ganz das Gesuchte.

Ich möchte den Inhalt aller Exceltabellen eines Verzeichnisses nach einen Begriff durchsuchen und die Ergebnisse (ganze Zeile der Fundstelle) in der Listbox auflisten. Im meinem Beispielcode funktioniert das nur in derselben Exceltabelle. Wie muss der Code verändert werden , um die Suche auf weitere Dateien auszuweiten. Funktioniert die Suche auch bei geschlossenen Dateien?

Gruß andreas


  

Betrifft: AW: Dateien durchsuchen und Ergebnis in Listbox auflis von: Tom
Geschrieben am: 10.04.2014 21:51:08

Hallo Hajo,

ist ne feine Sache deine Makro zum Auslesen, aber eine Frage hätte ich dennoch dazu.

Ich würde das Makro gerne so anpassen wollen, dass das Verzeichnis mit den Optionen und dem Dateityp nicht jedes Mal erneut eingegeben werden muss. Das Makro soll nur auf ein fest verbundenes Laufwerk zugreifen indem sich nur xlsm Dateien befinden. Ich möchte nur Start drücken und es soll losrattern...

Kannst Du mir sagen wie ich das mit deinem Makro angehen soll?

danke & gruß Tom


  

Betrifft: AW: Dateien durchsuchen und Ergebnis in Listbox auflis von: Hajo_Zi
Geschrieben am: 11.04.2014 17:59:32

Hallo Tom,

blende den Schalter zu Verzeichniswahl aus und schreibe eine festen Ordner im Code.
hier
StOrdner = GetAOrdner ' Verzeichnis auswählen

Gruß Hajo


  

Betrifft: AW: Dateien durchsuchen und Ergebnis in Listbox auflis von: Tom
Geschrieben am: 12.04.2014 07:41:27

Hallo Hajo,

danke für die Antwort. Wie blende ich den Schalter zu Verzeichniswahl aus? Das müsste der Schalter sein?

gruß Tom

Private Sub Cmd_Verzeichnis_Click()
    StOrdner = "L:\"                    
    If StOrdner = "" Then
        MsgBox "Es wurde kein Ordner ausgewählt!"
    Else
        StTyp = "XLSM"
            
    End If
End Sub



  

Betrifft: AW: Dateien durchsuchen und Ergebnis in Listbox auflis von: Hajo_Zi
Geschrieben am: 12.04.2014 10:03:58

Hallo Tom,

in VBA, in der UserForm, den SChalter auswählen und die Visible Eigenschaft auf False setzen.

Gruß Hajo


  

Betrifft: AW: Dateien durchsuchen und Ergebnis in Listbox auflis von: Tom
Geschrieben am: 12.04.2014 22:51:43

Hallo Hajo,

danke für die Erleuchtung, hat aber nicht ganz funktioniert. Finde den richten Schalter nicht zum ausblenden.
In meinem Beitrag "auslesen von dateien" https://www.herber.de/forum/messages/1357151.html haben ich mal umschrieben und angehängt wie das Makro aktuell komplett aussieht und arbeitet. Ich meine Du warst damals mit einem Kollegen von mir maßgeblich an der Entstehung beteiligt.

vieleicht kannst ja mal einen Blick drauf schmeißen und mir Tipps geben, wie man es schlanker machen könnte, damit es zügiger durchläuft?!

Danke

gruß Tom


  

Betrifft: AW: Dateien durchsuchen und Ergebnis in Listbox auflis von: Hajo_Zi
Geschrieben am: 13.04.2014 09:58:03

Hallo Tom,

es gibt in VBA die Eigeschaften und da visible.
meherere Dateien runterladen und ansehen das ist mir zu aufwendig. Es ging ja nur um einen Code.

Gruß Hajo


  

Betrifft: AW: Dateien durchsuchen und Ergebnis in Listbox auflis von: fcs
Geschrieben am: 13.04.2014 10:15:17

Hallo Andreas,

ohne Öffnen der Dateien kann man nicht auf die Daten zugreifen. Man kann es nur mehr oder weniger stark im Hintergrund machen und was möglich ist hängt auch davon ab wie einheitlich Tabelleblätter und Spaltentitel benamt sind.
Am einfachsten ist es jedoch die Dateien ohne Bildschirmaktualisierung in Excel schreibgeschützt zu öffnen, die relevanten Daten auszulesen/kopieren, und die Datei ohne zu speichern wieder zu schliessen.

Bevor hier jetzt aber irgendetwas programmiert wird wären noch ein paar Sachen zu klären:
1a. Wieviele Dateien im Verzeichnis sind zu durchsuchen?
1b. Ist das Verzeichnis fix oder muss es variabel ausgewählt werdn können?

2. Welches Tabellenblatt soll durchsucht werden? Bestimmter Blattname oder immer 1. Blatt?

3. Wieviele Datenzeilen enthalten die Tabellenblätter in etwa?

4a. Wieviele und welche Spalten mit Daten sollen in der Listbox dargestellt werden?
4b. In deiner Ausgangsfrage schreibst du, dass du nach der Auswahl in der Listbox dir die Zeile anzeigen lassen möchtest. Beutet dies, dass dann auch der Dateiname, die Zeile und ggf. auch der Tabellenname der Fundstellen irgendwo zwischengespeichert werden müssen?

5a. Müssen die Quelltabellen beim Öffnen neu berechnet werden?
5b. Enthalten die Quelltabellen externe Vernüpfungen/Links? Müssen diese aktualisiert werden?
5c. Enhalten die Quelldateien irgendwelche Ereignismakros?

6. Wie oft wird mit dem Userform nach Daten gesucht?
Wenn die Anzahl der Datenzeilen in den Dateien nicht zu hoch ist und/oder oft nach den Daten gesucht wird, dann würde ich mir an deiner Stelle per Makro alle relevanten Daten in einem Tabellenblatt der Datei mit dem Userform zusammenkopieren und dann diese Daten als Basis für die Datensuche verwenden.
Diese Liste würde dann nur bei Bedarf oder z.B. beim Öffnen der Datei aktualisiert.

Gruß
Franz


 

Beiträge aus den Excel-Beispielen zum Thema "Dateien durchsuchen und Ergebnis in Listbox auflis"