ActivX - FileSearch

Nicole

Mitglied
Hallo

ich habe nachfolgenden Code in ein Programm eingebaut und erhalte gleich beim starten des Programms folgende Meldung mit dem Verweis auf die rot markierte Zeile im Code:

Laufzeitfehler 429
Objekterstellung durch ActivX-Komponente nicht möglich.

Hat jemand eine Idee was ich da falsch mache?
Oder kann ich diese FileSearch vielleicht gar nicht so einfach in ein Programm einbauen?

Besten Dank und Gruss
Nicole


Code:
 ...Dim DateiSuche As FileSearch
    Dim i As Integer
    Set DateiSuche = Application.FileSearch("C:\" & FileX & ".pdf")
    
    With DateiSuche
    .LookIn = "C:\"
    .Filename = FileX & ".pdf"
    
'With Application.FileSearch
'    .NewSearch
'    .LookIn = "V:\pdfout"
'    .SearchSubFolders = True
'    .Filename = FileX & ".pdf"
'    .MatchTextExactly = True
'    .FileType = msoFileTypeAllFiles
'End With

   
    If .Execute() > 0 Then
        MsgBox "There were " & .FoundFiles.Count & _
            " file(s) found."
        For i = 1 To .FoundFiles.Count
            MsgBox .FoundFiles(i)
        Next i
    Else
        MsgBox "There were no files found."
    End If

    End With
 
Ich hab hier zwar nur Office 97 (also 8.0) installiert, und wenn ich den Verweis darauf setze, dann hab ich auch die FileSearch-Klasse. Aber was noch fehlt ist die Klasse von dem Application-Objekt. Kann aber auch an meiner Office-Version liegen...

Nachtrag: Ich hab's nochmal auf einem anderen Rechner mit Access Basic versucht und da klappt Dein Code ohne weitere Probleme. Allerdings musste ich ein paar kleine Anpassungen vornehmen und das ganze sieht jetzt so aus:
Code:
Dim DateiSuche As FileSearch
Dim i As Integer
Set DateiSuche = Application.FileSearch
    
With DateiSuche
    .LookIn = "C:\"
    .FileName = "bla.pdf"
    
    'With Application.FileSearch
    '    .NewSearch
    '    .LookIn = "V:\pdfout"
    '    .SearchSubFolders = True
    '    .Filename = FileX & ".pdf"
    '    .MatchTextExactly = True
    '    .FileType = msoFileTypeAllFiles
    'End With

   
    If .Execute() > 0 Then
        MsgBox "There were " & .FoundFiles.Count & _
            " file(s) found."
        For i = 1 To .FoundFiles.Count
            MsgBox .FoundFiles(i)
        Next i
    Else
        MsgBox "There were no files found."
    End If
End With
 
Zuletzt bearbeitet:
Das ist ja schon mal gut zu wissen das es funktioniert leider hab ich aber kein Access Basic ind das ganze sollte auch in VB6 funktionieren.

Ich habe mal Deinen Code in mein Programm eingefügt und erhalte dann folgende Meldung:

LAufzeitfehler 424
Object erforderlich

Mit derm Verweis auf die Zeile

Set DateiSuche = Application.FileSearch


Ich hab echt keine Ahnung was das Problem ist.


Gruss Nicole
 
Access Basic funktioniert ja auch etwas anders als normales VB. In VB gibt es nicht dieses Application-Objekt, das man in VBA benutzen kann. Auf das eigene Anwendungs-Objekt zuzugreifen, kann man zwar App benutzen, aber das unterscheidet sich schon in der Klassenstruktur von den Office-Application-Objekten.

Das Problem ist, dass Du nur eine Instanz von der FileSearch-Klasse erstellen kannst, wenn Du schon ein Application-Objekt hast. Und ich hab offen gestanden keinen blassen Schimmer, wie Du mit normalem VB da ran kommen kannst... :rolleyes:
 
Mist vielleicht muss ich da doch etwas anderes versuchen.
Irgendwie find ich einfach keine gescheite Lösung.

Komisch find ich nur das dieser Code als Tipp in meinem Visual Basic 6 Kompendium steht.

Falls du noch eine andere Idee hast wie ich auf eine relativ unkomplizierte Art ein File in einem Verzeichnis suchen kann das allerdings erst nach einigen Sekunden dort erscheint wäre ich Dir echt dankbar.

Danke für Deine Mühe
Gruss Nicole
 
Naja, wenn es nur darum geht, in einem Verzeichnis nach bestimmten Dateien zu suchen, dann würde ich Dir eher ein FSO (FileSystemObject) empfehlen. Oder eben die herkömmliche Methode über die API-Funktionen (FindFirst, FindNext, FindClose). Wenn die Datei aber erst nach ein paar Sekunden in dem Verzeichnis liegt, müsstest Du vorher noch eine Art Verzögerung einbauen.

PS: Von wem ist denn dieses Kompendium? Ich hab hier ein VB5-Kompendium und das bezieht sich auch zum grössten Teil auf VBA und nicht auf VB. :rolleyes:
 
Das ist von Peter Monadjemi Aus der Markt und Technik Reihe.

Dürfte ich Dich vielleicht bitten mich das Code mässig etwas genauer zu unterstützen da verlassen mich nämlich solangsam meine Kenntnisse.
 
Okay, von dem hab ich auch das VB5-Kompendium hier. Und wie gesagt ist das eher für VBA als für VB... :rolleyes:

Für die Suche nach Dateien in einem Verzeichnis hab ich auch mal ein Tutorial geschrieben. Das findest Du hier in den Programmiertutorials unter dem Thema "Rekursive Funktionen".
Das kannst Du eigentlich schon fast 1 zu 1 übernehmen, Du musst nur noch evtl. die Rekursion entfernen und die Verzögerung einbauen (z.B. mit einem Timer). Und natürlich die Suchkriterien etwas anpassen.
 
Zurück