Anzeige
Archiv - Navigation
1632to1636
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

Hochlaufende Schleife mit Dateinamen

Hochlaufende Schleife mit Dateinamen
09.07.2018 14:30:01
Oliver
Hallo liebes Forum,
ich bräuchte bitte einmal eure Hilfe.
Ich habe ein VBA Code, der ein geschlossenes Excel öffnet und einen bestimmten Bereich in ein neues Kopiert und dann wieder schließt.
Soweit so gut.
Nun habe ich aber 12 solcher Dateien. Alles identisch aufgebaut aber unterschiedlich benahmt. Ich könnte den Code jetzt einfach 12 mal untereinander kopieren. Aber da wird sogar mir schlecht.
Das müsste doch auch per Schleife gehen.
Nur bekomme ich das leider nicht zum fliegen.
Meine Idee wäre:
Ich definiere Variablen für die Dateinamen. (Projectfile1, Projectfile2, … Projectfile12)
Dann würde ich diese für die Schleife
For n = 1 To 12
nutzen.
Da brauche natürlich strings und dachte mir ich würde n mit m = CStr(n) innerhalb der Schleife in Strings umwandeln.
Das "zusammensetzen der Dateinamen funktioniert aber leider nicht.
Bin ich da auf dem Holzweg, oder hat jemand noch eine andere Idee, wie ich das machen kann?
Vielen Dank für eure Hilfe!
Viele Grüße
Oliver
Hier mal meine kompletter Code bis jetzt mit zwei Dateien als Test:
Sub Kopieren()
Application.ScreenUpdating = False
Dim leereZeile
Dim Targetfile As String
Dim TargetfileTab, ProjectTab As String
Dim Projectpath As String
Dim Projectfile1, Projectfile2 As String
Dim lngLastRow As Long
Dim n As Integer
Dim m As String
' ***** Dateinamen pflegen ******
Targetfile = "DCX Tracker.xlsm"
TargetfileTab = "Input B"
Projectpath = "C:\2_Working Material\Excel\CopyFromClosedFiles\"
ProjectTab = "Avail."
Projectfile1 = "File1.xlsx"
Projectfile2 = "File2.xlsx"
' ***** Schleife zum Kopieren *******
For n = 1 To 2
m = CStr(n)
leereZeile = Workbooks(Targetfile).Sheets(TargetfileTab).Cells(Rows.Count, 2).End(xlUp). _
_
Row + 1
Workbooks.Open Projectpath & Projectfile + m  ' 

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

Betreff
Datum
Anwender
Anzeige
AW: Hochlaufende Schleife mit Dateinamen
09.07.2018 14:34:50
Torsten
Hallo Oliver.
Fragen dazu:
1. Sind diese Dateien alle im gleichen Ordner und sind es alles xlsx. Dateien?
2. Sind nur diese Dateien in diesem Ordner, oder auch andere?
3. Wenn 1. und 2. ja, sind die Sheets, woraus die Daten kopiert werden sollen, alle gleich benannt in diesen Dateien?
AW: Hochlaufende Schleife mit Dateinamen
09.07.2018 14:43:09
KlaWet
Hallo Oliver,
versuch es mal so:
Dim Projectfile(12) as String
Die Variablen dann zuordnen:
Projectfile(1) = "..."
Projectfile(2)="""
...
im Code kannst du die Schleife dann so laufen lassen:
For n = 1 to 12
Workbooks.Open Projectpath & Projectfile(n)
Next n
Ich hoffe es hilft die weiter
Gruß
Klaus
Anzeige
AW: Hochlaufende Schleife mit Dateinamen
09.07.2018 15:03:12
Oliver
Hallo Klaus,
tausend Dank! Funktioniert! Musste noch ein paar Variablen von Projectfile1 in Projectfile(n) umwandeln. Aber es klappt wunderbar!
Dickes Dankeschön und einen schöne Woche dir!
PS: Danke auch dir Torsten! Wahrscheinlich muss ich das nächste mal genauer in der Beschreibung sein. Aber auch dir vielen Dank für die wahnsinnig schnelle Antwort und Hilfsbereitschaft!
Viele Grüße und euch eine schöne Woche!
Oliver
AW: Hochlaufende Schleife mit Dateinamen
09.07.2018 15:13:13
Torsten
Kein Problem,
nur noch als Anmerkung. Du bist hier jetzt allerdings auf 12 Dateien beschraenkt.
Ich wuerde das flexibler loesen. Deshalb hatte ich die Fragen gestellt. Wenn nur diese Dateien in dem Ordner sind, wo Daten ausgelesen werden sollen, wuerde ich das so loesen:

Dim Pfad As String, Dateiname As String
Pfad = "Dein Pfad\"
Dateiname = Dir(Pfad & "*.xlsx")
Application.ScreenUpdating = False
Do While Dateiname  ""
Workbooks.Open Filename:=Pfad & Dateiname
'hier dein Kopier code als With Anweisung z.B.
ActiveWorkbook.Close False
Dateiname = Dir()
Loop
Application.ScreenUpdating = False
Dann werden alle in dem Ordner befindlichen Dateien abgearbeitet, egal wie viele.
Anzeige
AW: Hochlaufende Schleife mit Dateinamen
09.07.2018 16:14:43
KlaWet
@ Oliver
Gerne doch, kein Problem.
@Thorsten
Ist auch ein Interessanter Ansatz.
Allerdings stört mich persönlich immer, dass ich keine richtige Kontrolle darüber habe, was ich da öffne. Es garantiert mir ja keiner, dass nicht irgendein anderer User in den Ordner eine andere Excelmappe speichert.
was ich mir noch vorstellen könnt:
Dim Projectfile(100) as string
dann nur so viele Variablen deklarieren wie benötigt werden. (z.B. 1-15)
und dann:
For n = 1 to ubound(Projectfile) 'oder war es lbound()?
Wäre dann so halb variabel, da man die Liste der Dateien schnell ergänzen kann.
Wie auch immer, euch beiden auch ein schönes WE
Gruß
Klaus
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige