Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
696to700
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
696to700
696to700
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Probleme mit Application.FileSearch

Probleme mit Application.FileSearch
19.11.2005 17:59:31
Horst
Hallo,
mit folgenden Befehlen suche ich in dem aktuellen Verzeichnis nach jpg
Dateien.
Bisher, auf meinem alten Rechner (98), hat das einwandfrei funktioniert.
Auf meinem neuen Rechner (XP) geht der PC meistens bei .Execute in eine Endlosschleife und lässt sich nur noch mit dem Taskmanager abwürgen.
ThisWorkbook.Path wird beim debuggen noch richtig angezeigt.
Mach ich da was falsch ?
Liegt das eventuell an XP ?
oder....
Vielen Dank im Voraus
Gruß Horst
Set dNamen = Application.FileSearch
With dNamen
.LookIn = ThisWorkbook.Path
.Filename = "*.jpg"
.Execute
If .FoundFiles.Count = 0 Then
MsgBox ("Kein jpg Bild im aktuellen Verzeichniss gefunden")
Unload Me
Exit Sub
End If
usw.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Probleme mit Application.FileSearch
19.11.2005 18:09:44
Nepumuk
Hallo Horst,
lass mal das Sternchen bei .Filename = "*.jpg" weg. Das soll angeblich bei XP für Problme sorgen.
Gruß
Nepumuk

AW: Probleme mit Application.FileSearch
19.11.2005 18:12:59
Hajo_Zi
Hallo Nepumuk,
ich habe es eigentlich andersrum erlebt. Unter 2003 lief es und unter 97 nicht. Aber auch nicht bei jeder Version.


AW: Probleme mit Application.FileSearch
19.11.2005 18:15:53
Nepumuk
Hi Hajo,
mit Windows2000 / Office2000 laufen beide Varianten fehlerfrei. Aber wenn garnicht geht, dann können wir auch noch auf API zurückgreifen.
Gruß
Nepumuk
AW: Probleme mit Application.FileSearch
19.11.2005 18:16:38
Hajo_Zi
Hallo Nepumuk,
ich hatte es unter XP Pro getestet.
Gruß Hajo
Anzeige
AW: Probleme mit Application.FileSearch
19.11.2005 18:33:50
Horst
Hallo Nepomuk,
also es scheint schon mit dem Joker zusammen zu hängen.
Ohne * hängt sich das ganze nicht mehr auf, aber er findet auch keine Dateien mehr.
Vielleicht hat noch jemand eine Idee, oder ich muss mir was anderes überlegen.
Übrigends: Auf dem Rechner ist XPPro
Gruß Horst
AW: Probleme mit Application.FileSearch
19.11.2005 18:39:10
Hajo_Zi
Hallo Horst,
ich benutze imer folgenden Ansatz.
#Option Explicit

Sub Dateiname_Hyperlink()
'* 07.10.04, 31.07.05; 02.08.05                   *
'* erstellt von Ramses Rainer                     *
'* Anpassungen von Hajo                           *
'* <a href="http://home.media-n.de/ziplies/">http://home.media-n.de/ziplies/</a> *
Dim StDateiname As String
Dim Dateiform As String
Dim InI As Long, TotFiles As Long
Dim Suchpfad As String
Dim OldStatus As Variant
Suchpfad = InputBox("Geben Sie den Ordner an, der durchsucht werden soll.", "Pfad definieren", Application.DefaultFilePath)
If Suchpfad = "" Then Exit Sub
Dateiform = InputBox("Geben Sie den Dateityp an der gesucht werden soll", "Dateierweiterung", "*.xls")
If Dateiform = "" Then Exit Sub
Application.ScreenUpdating = True
OldStatus = Application.StatusBar
'   neue Tabelle anlegen
Sheets.Add After:=Worksheets(Worksheets.Count)
With Application.FileSearch
.LookIn = Suchpfad              ' Suchverzeichnis
.SearchSubFolders = True        ' suchen auch in Unterverzeichnis
.Filename = Dateiform
If .Execute() > 0 Then
TotFiles = .FoundFiles.Count
Application.StatusBar = "Total " & TotFiles & " gefunden"
For InI = 1 To .FoundFiles.Count
Application.StatusBar = "Datei: " & InI & " von " & TotFiles
'               ergänzt Hyperlink, Dateigröße und Dateidatum
'               Dateiname abtrennen für alle Versionen unte Xp
'                For InI = Len(.FoundFiles(InI)) To 1 Step -1
'                    If Mid(.FoundFiles(InI), InI, 1) = "\" Then
'                        StDateiname = Mid(.FoundFiles(InI), InI + 1, Len(.FoundFiles(InI)) - InI + 2)
'                        Exit For
'                    End If
'                Next InI
'               Dateiname abtrennen ab XP
StDateiname = Mid(.FoundFiles(InI), InStrRev(.FoundFiles(InI), "\") + 1)
ActiveSheet.Hyperlinks.Add Anchor:=Cells(InI, 1), _
Address:=.FoundFiles(InI), TextToDisplay:=StDateiname       ' Hyperlink
Cells(InI, 2) = FileLen(.FoundFiles(InI))                       ' Dateigröße
Cells(InI, 3) = FileDateTime(.FoundFiles(InI))                  ' Dateidatum
Next InI
End If
End With
Application.StatusBar = OldStatus
Application.ScreenUpdating = True
End Sub

Gruß Hajo
Anzeige
AW: Probleme mit Application.FileSearch
19.11.2005 19:34:22
Nepumuk
Hallo Horst,
und so geht's per API:
' **********************************************************************
' Modul: Modul6 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function FindFirstFile Lib "kernel32.dll" Alias "FindFirstFileA" ( _
    ByVal lpFileName As String, _
    ByRef lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32.dll" Alias "FindNextFileA" ( _
    ByVal hFindFile As Long, _
    ByRef lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32.dll" ( _
    ByVal hFindFile As Long) As Long

Private Enum FILE_ATTRIBUTE
    FILE_ATTRIBUTE_READONLY = &H1
    FILE_ATTRIBUTE_HIDDEN = &H2
    FILE_ATTRIBUTE_SYSTEM = &H4
    FILE_ATTRIBUTE_DIRECTORY = &H10
    FILE_ATTRIBUTE_ARCHIVE = &H20
    FILE_ATTRIBUTE_NORMAL = &H80
    FILE_ATTRIBUTE_TEMPORARY = &H100
End Enum

Private Const MAX_PATH = 260&
Private Const INVALID_HANDLE_VALUE = -1&

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

Public Sub prcStart()
    Dim lngFileCount As Long, lngIndex As Long
    Dim strFileArray() As String
    Call prcGetFilesInFolder(ThisWorkbook.Path & "\", "*.jpg", lngFileCount, strFileArray())
    MsgBox CStr(lngFileCount) & " Datei(en) gefunden.", 48, "Hinweis"
    For lngIndex = 1 To lngFileCount
        MsgBox strFileArray(lngIndex)
    Next
End Sub

Private Sub prcGetFilesInFolder(ByRef strFolderPath As String, ByRef strSearch As String, _
        ByRef lngFileCount As Long, ByRef strFileArray() As String)

    Dim udtWFD As WIN32_FIND_DATA
    Dim lngSearch As Long
    Dim strFileName As String
    lngSearch = FindFirstFile(strFolderPath & strSearch, udtWFD)
    If lngSearch <> INVALID_HANDLE_VALUE Then
        Do
            If (udtWFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) <> FILE_ATTRIBUTE_DIRECTORY Then
                strFileName = Left$(udtWFD.cFileName, InStr(udtWFD.cFileName, Chr(0)) - 1)
                lngFileCount = lngFileCount + 1
                Redim Preserve strFileArray(1 To lngFileCount)
                strFileArray(lngFileCount) = strFolderPath & strFileName
            End If
        Loop While FindNextFile(lngSearch, udtWFD)
        FindClose lngSearch
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Probleme mit Application.FileSearch
19.11.2005 19:40:29
Horst
Hallo,
erst mal vielen Dank für Eure Mühen.
Habe meinen Code ein bischen nach Hajos Code umgeschrieben, ohne einen großen
Unterschied zu sehen.
Und was soll ich sagen: Er läuft besser, obwohl einmal ist der Rechner auch noch ins
Nirvana. Irgend ein Bug ist da wohl im System.
Wenn morgen schlechtes Wetter ist tetse ich mal den API Code, obwohl ich da nicht alles
verstehe.
Vielen Dank nochmal
Gruß Horst
AW: Probleme mit Application.FileSearch
23.11.2005 07:04:17
Christoph
Hallo Horst,
ich habe aus einer Access-Anwendung heraus exakt das gleich Problem, schrecklich.
Auf einem Rechner läuft es, auf dem anderen nicht. Und es läßt sich nicht nachvollziehen, woran es liegt.
Aber ich habe von Chris Rae eine Klasse gefunden, die ich für gut und leistungsfähig halte http://chrisrae.com/vba/routines/clrfilesearch.html, auch wenn er im Suchcode ein wenig unübersichtlich springt.
Viel Spaß damit und GoodBye .FileSearch
Christoph
Anzeige

33 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige