Anzeige
Archiv - Navigation
1012to1016
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
Inhaltsverzeichnis

Verschachtelte Dateisuche

Verschachtelte Dateisuche
01.10.2008 12:55:40
Christoph
Hallo Zusammen,
habe wieder mal ein Problem bei dem ich überhaupt nicht weiterkomme. Zuerst mal der bestehende, fehlerhafte Code:

Sub einzelne_kundendateien_zusammenfassen()
Dim Qs As FileSearch
Dim Zs As FileSearch
Dim QuellDatei As Long
Dim ZielDatei As Long
Dim Wbq As Workbook
Dim Wbz As Workbook
Dim wksq As Worksheet
Dim wksz As Worksheet
Dim zeile As Long, letzteZeile As Long
Dim Sheet As Integer
Dim name As String, anfang As String
Const zielPfad As String = "E:\1\test\Karteikartenneu"
Const quelPfad As String = "E:\1\test\Karteikarten"
'Application.ScreenUpdating = False
Set Qs = Application.FileSearch
Set Zs = Application.FileSearch
With Qs
.NewSearch
.LookIn = quelPfad
.SearchSubFolders = False
.FileType = msoFileTypeExcelWorkbooks
.Execute
For QuellDatei = 1 To .FoundFiles.Count
Set Wbq = Workbooks.Open(Filename:=.FoundFiles(QuellDatei)) 'FEHLER, da er  _
anscheinend die Suche nicht verschachteln kann
Set wksq = Wbq.Sheets(1)
'Set wksq = Wbq.Worksheets(1)
name = wksq.name
anfang = Left(name, 1)
'Sheet(1) vollständig kopieren
With Zs
.NewSearch
.LookIn = zielPfad
.SearchSubFolders = False
.FileType = msoFileTypeExcelWorkbooks
.Execute
For ZielDatei = 1 To .FoundFiles.Count
'Hier kommt noch eine IF-Abfrage hin, ob der Anfangsbuchstaben der Datei  _
gleich der Variable anfang ist
Set Wbz = Workbooks.Open(Filename:=.FoundFiles(ZielDatei))
'Sheet(1) am Ende einfügen
Wbz.Close False
'Wbz.Close True
Next ZielDatei
End With
Wbq.Close False
'Wbq.Close True
Next QuellDatei
End With
Application.ScreenUpdating = True
End Sub


Kleine Vorgeschichte:
In einem Verzeichnis "Karteikarten" sind für jeden Kunden Dateien mit jeweils einem Sheet enthalten.
In dem Verzeichnis "Karteikartenneu" sind die Dateien A.xls, B.xls, C.xls, ... , Z.xls enthalten.
Also der Code soll folgendes machen:
Die Dateien werden jeweils einzeln geöffnet und das Sheet kopiert. Nun wird der Anfangsbuchstabe des Sheetnamens ermittelt und damit die Datei im Verzeichnis "Karteikartenneu" gesucht, die mit dem gleichen buchstaben anfängt. Diese Datei wird dann geöffnet und das Sheet hineinkopiert.
Da auf diese Weise rund 3000 Dateien zusammengefasst werden sollen, möchte ich das automatisiert ablaufen lassen.
Beispiel:
In der Datei "Arend Hans.xls" existiert das Sheet "Arend Hans". Dieses Sheet soll in die Datei "A.xls" hinüberkopiert werden.
Problem: Für den ersten Kunden funktioniert mein obiger Code. Allerdings darf die Dateisuche wohl nicht ineinanderverschachtelt ablaufen, denn für den zweiten Druchlauf bringt er mir gleich eine Fehlermeldung.
Wär super, wenn mir jemand helfen könnte.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verschachtelte Dateisuche
01.10.2008 13:37:51
Rudi
Hallo,
ungetestet:

Sub tt()
Dim strDatei As String, wkbQ As Workbook, wkbZ As Workbook
Const strQuellPfad As String = "E:\1\test\Karteikarten\"
Const strZielPfad As String = "E:\1\test\Karteikartenneu\"
Application.ScreenUpdating = False
strDatei = Dir(strQuellPfad & "*.xls", vbNormal)
Do While strDatei  ""
Set wkbQ = Workbooks.Open(strQuellPfad & strDatei)
Set wkbZ = Workbooks.Open(strZielPfad & Left(wkbQ.Sheets(1).Name, 1) & ".xls")
wkbQ.Sheets(1).Copy after:=wkbZ.Sheets(wkbZ.Sheets.Count)
wkbZ.Close True
wkbQ.Close False
strDatei = Dir
Loop
Application.ScreenUpdating = True
End Sub


Gruß
Rudi

Anzeige
AW: Verschachtelte Dateisuche
01.10.2008 14:02:49
Christoph
Hmm, jetzt müsste ich das nur noch kapieren! Ziemlich krass komprimierter Code!!! Dankeschön
Wo müsste ich den Code erweitern, wenn für S, ST und SCH eine if-Abfrage notwendig ist?
Eines hab ich noch vergessen:
In den Alphabetsdateien (A.xls, b.xls ...) gibt es ganz vorne eine Tabellenblatt das "A" (oder 'b' oder 'c' ...) heisst. Nachdem das Sheet eingefügt worden ist, möchte ich gerne den Namen des Sheets in das Blatt A ab der Zelle A5 schreiben und den Namen mit einem Hyperlink auf das Tabellenblatt hinterlegen. wie geht das?
https://www.herber.de/bbs/user/55773.xls
https://www.herber.de/bbs/user/55774.xls
Anbei ein paar Beispieldateien
Anzeige
AW: Verschachtelte Dateisuche
01.10.2008 15:25:00
Rudi
Hallo,
zu1.

Sub tt()
Dim strDatei As String, wkbQ As Workbook, wkbZ As Workbook
Dim strFirst As String
Const strQuellPfad As String = "E:\1\test\Karteikarten\"
Const strZielPfad As String = "E:\1\test\Karteikartenneu\"
Application.ScreenUpdating = False
strDatei = Dir(strQuellPfad & "*.xls", vbNormal)
Do While strDatei  ""
Set wkbQ = Workbooks.Open(strQuellPfad & strDatei)
strFirst = LCase(Left(wkbQ.Sheets(1).Name, 1))
If strFirst = "s" Then
If LCase(Left(wkbQ.Sheets(1).Name, 2)) = "st" Then
strFirst = "st"
ElseIf LCase(Left(wkbQ.Sheets(1).Name, 3)) = "sch" Then
strFirst = "sch"
End If
End If
Set wkbZ = Workbooks.Open(strZielPfad & strFirst & ".xls")
wkbQ.Sheets(1).Copy after:=wkbZ.Sheets(wkbZ.Sheets.Count)
wkbZ.Close True
wkbQ.Close False
strDatei = Dir
Loop
Application.ScreenUpdating = True
End Sub


Gruß
Rudi

Anzeige
AW: Verschachtelte Dateisuche
01.10.2008 16:01:00
Christoph
Merci Rudi,
mir fällt es richtig schwer den Sprung von C/C++ auf vba mit der String-Verknüpfung der Dateinamen zu schaffen. Deshalb habe ich ewig an der s/st/sch-Aufteilung und der Dateiansteuerung hingebaut.
Kann mir noch jemand mit den Hyperlinks helfen`?
AW: Verschachtelte Dateisuche
01.10.2008 20:46:19
Uduuh
Hallo,
such doch mal im Archiv z.B. nach Inhaltsverzeichnis
Gruß aus’m Pott
Udo

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige