Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1036to1040
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
Inhaltsverzeichnis

.Filename = FileToSearch & ".avi"

.Filename = FileToSearch & ".avi"
04.01.2009 20:18:00
Franz
Hallo,
wie kann man den Suchfilter erweitern auf zusätzlichen Endungen?
Beispiel: .avi und .mpg?
Finde nothing im Archiv.
Tschüss!
Franz D.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
was ist FileToSearch? owT
04.01.2009 20:37:30
Rudi
AW: was ist FileToSearch? owT
04.01.2009 20:56:00
Franz
Hallo Rudi,
Sorry Rudi! hier der Code-Schnipsel aus dem Archiv wo es zum Einsatz kommt:

Sub Suppe
Set objFileSearch = Application.FileSearch
With objFileSearch
.NewSearch
.LookIn = DirToSearch
.FileType = msoFileTypeAllFiles
.SearchSubFolders = True
'.Filename = FileToSearch & ".*"
.Filename = FileToSearch & ".avi"
If .Execute() > 0 Then
'MsgBox "There were " & .FoundFiles.Count & " file(s) found."
Cells(1, 1).Value = .FoundFiles.Count
Cells(1, 1).Name = "ItemFiles"
For i = 2 To .FoundFiles.Count
'MsgBox .FoundFiles(i)
Cells(i, 1).Value = i
Cells(i, 2).Value = .FoundFiles(i)
Next i
Else
MsgBox "There were no files found."
End If
End With
End Sub


OK?
Franz D.

Anzeige
AW: was ist FileToSearch? owT
05.01.2009 00:10:00
Rudi
Hallo,

OK?


Nö.
DirToSearch ist nicht definiert,
VBA gut?
Schon mal was von Option Explicit gehört?
Gruß
Rudi

AW: was ist FileToSearch? owT
05.01.2009 00:56:01
Franz
Hallo Rudi!
Gut! Ich formuliere es anders: Vergessen wir den FileToSearch. Weiss du wie man generell in einem Object des Typs "objFileSearch" sowohl als auch (z.B.) Dateien des Typs "avi" und/oder "mpg" suchen kann?
Wie wäre dementsprechend die Syntax von ".Filename" (ohne Einsatz einer Variable FileToSearch)?
Tschüss!
Franz D.
AW: was ist FileToSearch? owT
05.01.2009 12:14:00
Tino
Hallo,
verwende es Doch so

.Filename = "*.*"


Es werden alle Dateien gefunden.
Im weiteren Code, filterst Du die Dateien z. Bsp. mit dem Like Operator.


If (LCase(.FoundFiles(i)) Like "*.jpg") Or (LCase(.FoundFiles(i)) Like "*.mpg") Then
'Dein andere Code
End If


Kann es leider nicht testen, habe hier xl2007 und da gibt es FileSearch nicht mehr.
Gruß Tino

Anzeige
AW: was ist FileToSearch? owT
05.01.2009 19:55:50
Franz
Hallo Tino!
Habe es nicht geschafft deine Lösung zu implementieren (bin kein Profi). Danke trotzdem für deine Bemühungen. Ich habe mittlerweile etwas lapidar folgendes geschafft:

Sub Struppi_such()
Sheets.Add
Call Dateien_vom_Typ_suchen("C:", "*.avi")
Sheets.Add
Call Dateien_vom_Typ_suchen("C:", "*.mpg")
End Sub



Sub Dateien_vom_Typ_suchen(DirToSearch As String, FileToSearch As String)
Dim i As Integer
Dim objFileSearch As FileSearch
Set objFileSearch = Application.FileSearch
With objFileSearch
.NewSearch
.LookIn = DirToSearch
.FileType = msoFileTypeAllFiles
.SearchSubFolders = True
.Filename = FileToSearch
If .Execute() > 0 Then
Cells(1, 1).Value = .FoundFiles.Count
For i = 2 To .FoundFiles.Count
Cells(i, 1).Value = .FoundFiles(i)
Next i
Else
MsgBox "There were no files found."
End If
End With
End Sub


Das Problem liegt daran dass die "Vorgänger"-Treffer immer wieder überschrieben werden je nach neuem Attribut. Habe auch nach einer "Pipe"-Lösung gesucht (ähnlich wie "|*.avi|*.mpg|) wie sie in mancher VB-Literatur zu finden ist. Nochmals Danke schön Tino. Kann man meine "Lösung" eventuell optimieren?
MfG
Franz D.

Anzeige
optimieren?
06.01.2009 10:21:00
Tino
Hallo,
"Kann man meine "Lösung" eventuell optimieren?"
ich habe hier zur Zeit xl2007 und kann den Code nicht testen.
Lass die Frage doch offen stehen, es gibt bestimmt einige die es testen können.
Gruß Tino
AW: ObjectFileSearch als Suchmaschine
06.01.2009 11:21:00
Franz
Hallo TINO ! (Ups!. Es reimt sich!)
Danke für dein Vorschlag! Meine "möchtegerne Suchmaschine" muss ja nicht nur als Video-Archiv nützlich sein. Fazit: Abwarten und Kaffee trinken (hab' kein Tee).
Tschüss!
Franz D.
PS: arbeite natürlich auch noch selbt dran
AW: ObjectFileSearch als Suchmaschine
06.01.2009 11:59:00
Josef
Hallo Franz,
probier mal diesen Code.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit
'by J.Ehrensberger
Private Function FileSearchINFO(ByRef Files As Variant, ByVal InitialPath As String, Optional ByVal FileName As String = "*", _
        Optional ByVal SubFolders As Boolean = False) As Long

    
    '# PARAMETERINFO:
    '# Files: Datenfeld zur Ausgabe der Suchergebnisse
    '# InitialPath: String der das zu durchsuchende Verzeichnis angibt
    '# FileName: String der den gesuchten Dateityp oder Dateinamen enthält (Optional, Standard="*.*" findet alle Dateien)
    '# Beispiele: "*.txt" - Findet alle Textdateien
    '# "*name*" - Findet alle Dateien mit "name" im Dateinamen
    '# "*.avi;*.mpg" - Findet .avi und .mpg Dateien (Dateitypen mit ; trennen)
    '# SubFolders: Boolean gibt an, ob Unterordner durchsucht werden sollen (Optional, Standard=False)
    
    
    Dim fobjFSO As Object, ffsoFolder As Object, ffsoSubFolder As Object, ffsoFile As Object
    Dim intC As Integer, varFiles As Variant
    
    Set fobjFSO = CreateObject("Scripting.FileSystemObject")
    
    Set ffsoFolder = fobjFSO.GetFolder(InitialPath)
    
    On Error Resume Next
    
    If InStr(1, FileName, ";") > 0 Then
        varFiles = Split(FileName, ";")
    Else
        Redim varFiles(0)
        varFiles(0) = FileName
    End If
    For Each ffsoFile In ffsoFolder.Files
        If Not ffsoFile Is Nothing Then
            For intC = 0 To UBound(varFiles)
                If LCase(fobjFSO.GetFileName(ffsoFile)) Like LCase(varFiles(intC)) Then
                    If IsArray(Files) Then
                        Redim Preserve Files(UBound(Files) + 1)
                    Else
                        Redim Files(0)
                    End If
                    Set Files(UBound(Files)) = ffsoFile
                End If
            Next
        End If
    Next
    
    If SubFolders Then
        For Each ffsoSubFolder In ffsoFolder.SubFolders
            FileSearchINFO Files, ffsoSubFolder, FileName, SubFolders
        Next
    End If
    
    If IsArray(Files) Then FileSearchINFO = UBound(Files) + 1
    On Error GoTo 0
    Set fobjFSO = Nothing
    Set ffsoFolder = Nothing
End Function

Sub test()
    Dim a, b
    Dim result As Long, l As Long
    
    result = FileSearchINFO(a, "E:\", "*.avi;*.mpg", True)
    
    If result <> 0 Then
        Redim b(UBound(a) + 1, 5)
        b(0, 0) = "Name"
        b(0, 1) = "Path"
        b(0, 2) = "Size/KB"
        b(0, 3) = "DateCreated"
        b(0, 4) = "DateLastModified"
        b(0, 5) = "DateLastAccessed"
        For l = 0 To UBound(a)
            b(l + 1, 0) = a(l).Name
            b(l + 1, 1) = a(l).Path
            b(l + 1, 2) = Clng(a(l).Size / 1024)
            b(l + 1, 3) = a(l).DateCreated
            b(l + 1, 4) = a(l).DateLastModified
            b(l + 1, 5) = a(l).DateLastAccessed
        Next
        
        Range(Cells(1, 1), Cells(UBound(b, 1) + 1, UBound(b, 2) + 1)) = b
        Range(Cells(1, 1), Cells(UBound(b, 1) + 1, UBound(b, 2) + 1)).Columns.AutoFit
    End If
End Sub

Gruß Sepp

Anzeige
AW: ObjectFileSearch als Suchmaschine
06.01.2009 12:20:15
Franz
Hallo Josef,
Ich fühle mich geehrt dass ein Josef an "Heilige 3.Könige" mir DIE Lösung schenckt.
Beim nächsten Leben werde ich auch Informatiker. Ich werde dein Prämium-Modul in meinem Video-Archiv einbauen.
HERZLICHEN DANK!
Franz D. aus dem schönen Frankenland

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige