Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Excel VBA: FileSearch - Problem





Frage

Hallo zusammen, ich habe ein Problem, das vmtl. im Zusammenhang mit FileSearch auftritt. Hintergrund: Ich durchlaufe mit FileSearch nacheinander ein paar Ordner, deren Pfad ich aus einer separaten Tabelle hole und suche dabei nach .xls-Tabellen, die bestimmte Voraussetzungen erfüllen. Diese Dateien kopiere ich dann in einen gemeinsamen Ordner. Wenn Dateien mit gleichem Namen auftreten, benenne ich die ältere der Dateien um in "_Alt_Datum_...[i]Dateiname[/i]. In der fett markierten Zeile bekomme ich einen Laufzeitfehler [quote] Laufzeitfehler '-2147467259 (80004005)': Automatisierungsfehler Unbeannter Fehler [/quote] Interessant ist auch, dass wenn ich die xls-Datei schließe, in der das Makro steckt, die Nachfrage kommt, ob die Änderungen in den Dateien, die das Makro zuvor "gelesen" hat, gespeichert werden sollen. (?!) Das sind die meiner Meinung nach wichtigsten Zeilen des Codes: [code] With Application.FileSearch .NewSearch '--> auf Standardeinstellungen setzen .LookIn = strPfadnameAktuell .SearchSubFolders = True .Filename = oWSBearbeitung.Cells(25, 2) .MatchTextExactly = True .FileType = msoFileTypeAllFiles If .Execute() > 0 Then . . . For lDateiZaehler = 1 To .FoundFiles.Count VDatumAktuelleDatei = FileDateTime(.FoundFiles(lDateiZaehler)) [b] Set oWBExtern = GetObject(.FoundFiles(lDateiZaehler)) [/b] [/code] In der obenstehenden Zeile tritt wie gesagt der Fehler auf. Ich definiere hier die Datei als oWBExtern und lese im Anschluß daraus den Dateinamen und den Pfad (über .name und .path). Diese Info verwende ich dann anschließend für die Dateioperationen. [code] ' bestehende Datei umbenennen Name strDateiAlt As strDateiNeu [/code] Hat jemand eine Idee, wo der Fehler liegen könnte bzw. vielleicht gibt es ja eine einfachere Lösung, mit der man das Problem "umschiffen" kann? Für Eure Hilfe im voraus vielen Dank!

Antwort 1 von nighty

hi snailhouse

2 tips

gruss nighty

name einer datei
Dir(.FoundFiles(lDateiZaehler ))


pfad der datei ist in der variable
strPfadnameAktuell


Antwort 2 von snailhouse

Hallo nighty,

vielen Dank für den Tipp.
Das hat mir ein Stück weitergeholfen, allerdings bekomme ich über strgPfadnameAktuell nur den Grundpfad, in meiner Suche berücksichtige ich aber auch Unterordner.

Nun habe ich es folgendermaßen gelöst:


            strPfadAktuell = Application.FileSearch.FoundFiles.Item(lDateiZaehler)  ' Pfad mit Dateiname
            strDateiNameAktuell = Dir(.FoundFiles(lDateiZaehler))                   ' Dateiname
            strPfadAktuell = Left(strPfadAktuell, (Len(strPfadAktuell) - Len(strDateiNameAktuell))) ' Dateiname aus Pfad herausschneiden


d.h. ich hole über .item den Dateiname mit Pfad und schneide anschließend den Dateinamen aus dem string raus.

Due Kopierfunktion habe ich folgendermaßen gelöst (dann tritt auch nicht das Problem auf, dass die Dateien irgendwo im Hintergrund, aber nicht sichtbar , geöffnet werden.
Mit FileCopy traten ebenfalls Probleme auf..:


' Benötigte API-Deklaration für Kopierfunktion
Private Declare Function CopyFile Lib "kernel32" _
  Alias "CopyFileA" ( _
  ByVal lpExistingFileName As String, _
  ByVal lpNewFileName As String, _
  ByVal bFailIfExists As Long) As Long
.
.
.
' Neue Kopierfunktion "DateiKopieren", Aufruf wie in VBA FileCopy
Public Function DateiKopieren(ByVal sSourceFile As String, _
  ByVal sDestFile As String, _
  Optional ByVal bAlwaysOverwrite As Boolean = True) As Boolean
 
  Dim nResult As Long
 
  nResult = CopyFile(sSourceFile, sDestFile, CLng(Abs(Not bAlwaysOverwrite)))
  DateiKopieren = (nResult <> 0)
End Function
.
.
.
public sub DasEigentilicheMakro
.
DateiKopieren strPfadAktuell & strDateiNameAktuell, strAusgabePfad & strDateiNameAktuell
.
end sub


Trotzdem nochmals Danke für die Hilfe!

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: