Anzeige
Archiv - Navigation
576to580
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
576to580
576to580
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Application.FileSearch macht einen Fehler

Application.FileSearch macht einen Fehler
03.03.2005 09:09:32
Holger
Hallo,
ich habe das Problem, wenn ich die Funktion Application.FileSearch ... ausführen möchte, er eine Fehlermeldung ausgibt. Die Fehlermeldung lautet:
Die Methode 'FileSearch' für das Objekt'_Application' ist fehlgeschlagen.
Diese Fehlermeldung kommt aber nicht bei allen Computern.
Was muss ich an dem Computer wo es nicht geht einstellen, damit die Fehlermeldung in Excel-VBA nicht kommt oder gibt es eine andere Möglichkeit des Filesearches?
MfG
Holger Wächter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.FileSearch macht einen Fehler
03.03.2005 17:10:43
Nepumuk
Hallo Holger,
es gibt wesentlich schnellere Möglichkeiten nach einer Datei bzw. Dateien zu suchen.
1. Mit der Dir - Funktion (schnell)
2. Filesystemobjekt mit Late Binding (sehr schnell)
3. Filesystemobjekt mit Verweis auf scrrun.dll (noch schneller)
4. API - Funktion aus kernel32.dll (sauschnell)
Wie hättest du's denn gerne?
Gruß
Nepumuk
AW: Application.FileSearch macht einen Fehler
03.03.2005 17:43:19
Holger
Hallo,
das hört sich alles ja schon mal besser an, als meine Lösung. Ich würde gerne eine Lösung haben, die natürlich sehr schnell ist, aber die ich auch einfach in meinen Code einbinden kann. Würde mich freuen, wenn Du mir einen Lösungscode schicken könntest, denn das suchen, dauert wirklich schon etwas lange mit Filesearch.
Mein jetziger Code:
Filename = ActiveWorkbook.FullName
LängeFilename = Len(Filename)
LookinFile = Left(Filename, LängeFilename - 12)
With Application.FileSearch
.NewSearch
.LookIn = LookinFile
.SearchSubFolders = True
.Filename = Format(Material) + ".pdf"
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
If .Execute() &gt 0 Then PdfGefunden = "Ja"
End With
With Application.FileSearch
.NewSearch
.LookIn = LookinFile
.SearchSubFolders = True
.Filename = Format(Material) + ".htm"
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
If .Execute() &gt 0 Then HtmGefunden = "Ja"
End With
Danke schon mal.
MfG
Holger Wächter
Anzeige
AW: Application.FileSearch macht einen Fehler
03.03.2005 18:03:31
Nepumuk
Hallo Holger,
damit ich das richtig verstehe:
Du suchst im Pfad der Mappe mit allen Unterordnern, und nur dort? (API benötigt bei mir für ~ 7 GB mit ~ 100.000 Dateien ~ 4 Sekunden)
Du benötigst nur eine Bestätigung, dass die Dateien vorhanden sind?
Was verbirgt sich hinter dieser Formulierung: Format(Material) ?
Gruß
Nepumuk
AW: Application.FileSearch macht einen Fehler
03.03.2005 20:19:04
Holger
Hi,
eigentlich suche ich nur in diesem einen Ordner. Dort sind sehr sehr viele Dateien. Und ich möchte die Datei suchen, die in der Variabel Material hinterlegt wird. Es sind alles pdf und htm - Dateien. Danach wird diese Datei im weiteren Programm geöffnet.
Richtig ich suche eigentlich nur die Bestätigung das die Datei da ist.

Ich habe eine Materialliste in Excel mit Materialnummern. Die ausgewählte Nummer übergebe ich an die Variabel Material. Und die Suchfunktion soll prüfen, ob dafür ein technisches Datenblatt in From einer pdf oder htm - Datei vorhanden ist.
Das wäre super wenn Du mir zeigen könntest wie das geht mit dem Suchen unter API, da mein Filesearch halt Probleme macht.
MfG
Holger Wächter
Anzeige
AW: Application.FileSearch macht einen Fehler
03.03.2005 21:30:44
Nepumuk
Hallo Holger,
in diesem Fall würde dir dir DIR - Funktion auch gute Dienset leisten. Hier mal ein Beispiel für die API - Funktion:


Option Explicit
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As LongAs Long
Private Enum FILE_ATTRIBUTE
    MAX_PATH = 260
    INVALID_HANDLE_VALUE = -1
    FILE_ATTRIBUTE_ARCHIVE = &H20
    FILE_ATTRIBUTE_DIRECTORY = &H10
    FILE_ATTRIBUTE_HIDDEN = &H2
    FILE_ATTRIBUTE_NORMAL = &H80
    FILE_ATTRIBUTE_READONLY = &H1
    FILE_ATTRIBUTE_SYSTEM = &H4
    FILE_ATTRIBUTE_TEMPORARY = &H100
End Enum
Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * MAX_PATH
    cAlternate As String * 14
End Type
Private Sub GetFilesInFolder(ByVal strFolderPath As StringByVal strSearch As String)
    Dim WFD As WIN32_FIND_DATA, lngSearch As Long, strFileName As String
    lngSearch = FindFirstFile(strFolderPath & strSearch, WFD)
    If lngSearch <> INVALID_HANDLE_VALUE Then
        If (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) <> FILE_ATTRIBUTE_DIRECTORY Then
            MsgBox strSearch & " gefunden.", 64, "Information"
        Else
            MsgBox strSearch & " nicht gefunden.", 64, "Information"
        End If
        FindClose lngSearch
    End If
End Sub
Public Sub test1()
    Call GetFilesInFolder(ThisWorkbook.Path & "\", "Farben.htm")
End Sub


Und das selbe mit DIR:


Public Sub test2()
    If Dir$(ThisWorkbook.Path & "\" & "Farben.htm") <> "" Then MsgBox "Datei gefunden.", 64, "Information"
End Sub


Wie du siehst, für deine Bedürfnisse ausreichend. :-)
Gruß
Nepumuk
Anzeige
AW: Application.FileSearch macht einen Fehler
04.03.2005 08:25:29
Holger
Hallo Nepumuk,
Du hast mir sehr geholfen. Mit der Dir - Funktion alleine ist mein Suchindex jetzt schon in ein paar Sekunden fertig und nicht in ein paar Minuten.
API werde ich an einer anderen Stelle einsetzen. Vielen Dank für alles.
MfG
Holger Wächter

33 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige