Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Application.FileSearch

Forumthread: Application.FileSearch

Application.FileSearch
14.03.2013 12:03:42
Torsten
Hallo beisammen,
folgender Code läuft nicht mehr unter Excel 2010:
myArr = Array("NL*", "FAD*", "IOE*", "IOS*")
For i = 0 To UBound(myArr)
With Application.FileSearch
.NewSearch
.LookIn = "V:\Controlling Budget\Budget 2013\Turnover_Upload BW\BW UpLoad"
.SearchSubFolders = False
.Filename = myArr(i)
mit der Fehlermeldung "Objekt unterstützt diee Aktion nicht" (Excel springt in die Zeile "With Application.FileSearch")
Wie muß der Code denn nun lauten?
Vielen Dank für Eure Unterstützung.
Gruß
Torsten

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.FileSearch
14.03.2013 12:13:46
Daniel
Hi
Application.fileSearch gibt es seit Excel 2007 nicht mehr.
Beiträge dazu gibt es genügend im Archiv.
in deinem Fall vieleicht so:
for i = 0 to Ubound(myArr)
Datei = Dir("V:\Controlling Budget\Budget 2013\Turnover_Upload BW\BW UpLoad\" & myArr(i))
Do While datei  ""
Ergebnis = Ergebnis & ";" & Datei
Dir
Loop
Next

die gefundenen Dateinamen stehen jetzt im String Ergebnis mit Semikolon getrennt.
Gruß Daniel

Anzeige
AW: Application.FileSearch
14.03.2013 13:34:49
Torsten
Hallo Daniel,
vielen Dank für Deine Rückmeldung.
In Deinem Code wird aber leider immer nur die erste Datei aus dem Array eingelesen.
Die anderen Dateien, die in dem Pfad liegen, werden nicht eingelesen. Könntest Du Dir das nochmal anschauen?
Gruß
Torsten

AW: Application.FileSearch
14.03.2013 15:40:59
Torsten
Hallo Hajo,
vielen Dank für Deine Rückmeldung und den Link mit den beispielen.
Gruß
Torsten

AW: Application.FileSearch
14.03.2013 14:44:19
Daniel
Hi
oh sorry
schreib mal vor dem Loop
Datei = Dir statt nur Dir
dann sollte es funktionieren.
Gruß Daniel

AW: Application.FileSearch
14.03.2013 15:39:51
Torsten
Hallo Daniel,
wir haben den Code zwar jetzt hinbekommen:
========================================================================
Const strPath As String = _
"V:\Controlling Budget\Budget 2013\Turnover_Upload BW\BW UpLoad\"
.....
Dim str As String
myArr = Array("NL*", "FAD*", "IOE*")
'Achtung: Greift trotz der Anweisung eine IOS*-Datei ("IOS_525033.xlsx")
For i = 0 To UBound(myArr)
str = Dir(strPath & myArr(i))
Do Until str = ""
Workbooks.Open Filename:=strPath & str
===========================================================================
was uns jetzt aber auffällt - und dafür haben wir keine Erklärung - trotz der Anweisungen im Array öffnet Excel eine Datei, deren Namen mit IOS* beginnt. In diesem Ordner gibt es mehrere Dateien, die mit IOS' beginnen, aber warum greift sich Excel immer wieder diese eine Datei, obwohl IOS* doch im Array gar nicht genannt wird?
Hast Du eine Idee woran das liegen könnte?
Vielen Dank für Deine Unterstützung.
Gruß
Torsten

Anzeige
AW: API-Funktion nutzen...
14.03.2013 13:32:37
JoWE
Hallo Torsten,
schau mal in diesen Link: http://www.vbarchiv.net/api/list_F.html
und hier die API-Funktionen FindFirstFile und FindNextFile
Gruß
Jochen

AW: API-Funktion nutzen...
14.03.2013 15:43:03
Torsten
Hallo Jochen,
vielen Dank für Deine Rückmeldung. Aber ich befürchte, diese Geschichte mit den APIs überfordert mich doch ein wenig..... :-(
Ich aber mit den Hinweisen der anderen bin ich jetzt klar gekommen.
Gruß
Torsten
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Anwendung von Application.FileSearch in VBA


Schritt-für-Schritt-Anleitung

Hier ist eine einfache Schritt-für-Schritt-Anleitung, um die Dateisuche ohne Application.FileSearch in VBA zu implementieren:

  1. Erstelle ein neues Modul in Excel VBA:

    • Öffne Excel und gehe zum Entwicklertab.
    • Klicke auf "Visual Basic" und füge ein neues Modul hinzu.
  2. Definiere die Variablen:

    Const strPath As String = "V:\Controlling Budget\Budget 2013\Turnover_Upload BW\BW UpLoad\"
    Dim myArr As Variant
    Dim str As String
    Dim i As Integer
  3. Initialisiere das Array:

    myArr = Array("NL*", "FAD*", "IOE*", "IOS*")
  4. Durchlaufe das Array und suche nach Dateien:

    For i = 0 To UBound(myArr)
       str = Dir(strPath & myArr(i))
       Do Until str = ""
           ' Hier kannst du die gefundene Datei öffnen oder verarbeiten
           Workbooks.Open Filename:=strPath & str
           str = Dir ' Nächste Datei
       Loop
    Next i

Häufige Fehler und Lösungen

  • Fehler: "Objekt unterstützt diese Aktion nicht"

    • Lösung: Application.FileSearch ist in Excel 2007 und späteren Versionen entfernt worden. Verwende stattdessen die Dir-Funktion.
  • Problem: Nur die erste Datei wird eingelesen

    • Ursache: Du hast vergessen, die Dir-Funktion korrekt zu initialisieren. Stelle sicher, dass du Datei = Dir vor der Schleife schreibst.

Alternative Methoden

Falls du eine leistungsfähigere Methode zur Dateisuche benötigst, kannst du die API-Funktionen FindFirstFile und FindNextFile verwenden. Diese sind flexibler, aber auch komplizierter. Sie ermöglichen eine erweiterte Suche, die über die Möglichkeiten von Dir hinausgeht.

Hier ein Link zu einer detaillierten Beschreibung der API-Funktionen: API-Funktionen.


Praktische Beispiele

Ein Beispiel für einen vollständigen VBA-Code, der mehrere Dateinamen in einem Ordner verarbeitet:

Sub Datei_Oeffnen()
    Const strPath As String = "V:\Controlling Budget\Budget 2013\Turnover_Upload BW\BW UpLoad\"
    Dim myArr As Variant
    Dim str As String
    Dim i As Integer

    myArr = Array("NL*", "FAD*", "IOE*", "IOS*")

    For i = 0 To UBound(myArr)
        str = Dir(strPath & myArr(i))
        Do Until str = ""
            Debug.Print str ' Gibt die Dateinamen im Direktfenster aus
            Workbooks.Open Filename:=strPath & str
            str = Dir
        Loop
    Next i
End Sub

Tipps für Profis

  • Verwende Application.FindFile für spezifische Suchen: Diese Funktion kann hilfreich sein, wenn du nur nach bestimmten Dateitypen suchst.
  • Debugging: Nutze Debug.Print im Code, um die gefundenen Dateinamen im Direktfenster anzuzeigen, bevor du sie öffnest. So kannst du sicherstellen, dass du die richtigen Dateien bearbeitest.

FAQ: Häufige Fragen

1. Warum funktioniert Application.FileSearch nicht mehr in Excel 2010?
Application.FileSearch wurde in Excel 2007 entfernt. Du musst stattdessen die Dir-Funktion verwenden.

2. Wie kann ich sicherstellen, dass nur die gewünschten Dateien geöffnet werden?
Überprüfe die Filterkriterien im Array und nutze die Debug.Print-Anweisung, um die Dateinamen vor dem Öffnen zu überprüfen.

3. Gibt es eine einfache Möglichkeit, nach Unterordnern zu suchen?
Mit der Dir-Funktion kannst du nur im angegebenen Ordner suchen. Für Unterordner musst du eine rekursive Funktion implementieren.

4. Wie kann ich die API-Funktionen in mein Projekt integrieren?
API-Funktionen erfordern etwas mehr Programmierkenntnisse. Du kannst die Funktionen in ein VBA-Modul einfügen, aber stelle sicher, dass du die richtige Syntax und die erforderlichen Deklarationen verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige