Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1556to1560
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

Schleife in vers. Datein kopieren

Schleife in vers. Datein kopieren
05.05.2017 13:27:49
Christian
Hallo, ich benötige leider wieder etwas Hilfe für ein Makro. Pro Zeile werden die Informationen für die Zieldatei und die zu kopierenden Bereich geschrieben. Jetzt soll Zeile für Zeile die entsprechende Datei geöffnet und der Bereich kopiert werden.
Beispiel:
Quelle (offene Excel Datei):
Tabelle1 wird das Makro ausgeführt und dort stehen die Informationen, was wohin kopiert werden soll.
Tabelle3 enthält die Daten die kopiert werden sollen in die Zieldatei.
C3: Pfad-Ziel
D3: Dateiname-Ziel
E3: Blattname-Ziel
M3: Anfangszeile in Tabelle3 ab der kopiert werden soll (ab Spalte B)
N3: Endzeile in Tabelle3 bis zu der kopiert werden soll (bis Spalte AG)
H3: Zeile in der Zieldatei ab der eingefügt werden soll (ab Spalte A)

Diese Prozedur soll er bis zur letzten Zeile in der Quelle Tabelle1 machen. Wenn nötig kann ich auch noch die Anzahl der Durchläufe/Datein angeben oder sonst was.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife in vers. Datein kopieren
05.05.2017 14:21:08
Michael
Hallo!
Nachdem bei Deiner Angabe einiges unklar ist, kann ich nur raten/schematisch antworten. Entscheidend ist auch, wie bspw. die Pfad-/Datei-Angaben in den Zellen stehen, insofern nur schematisch (Fehler ggf. möglich):
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim WsI As Worksheet: Set WsI = Wb.Worksheets("Tabelle1")
Dim WsQ As Worksheet: Set WsQ = Wb.Worksheets("Tabelle3")
Dim WbZ As Workbook, WsZ As Worksheet
Dim Pfad$, Datei$, i&
Application.ScreenUpdating = False
With WsI
For i = 3 To .Cells(.Rows.Count, 3).End(xlUp).Row
Pfad = .Cells(i, 3)
Datei = .Cells(i, 4)
Set WbZ = Workbooks.Open(Pfad & Datei)
Set WsZ = WbZ.Worksheets(.Cells(i, 5).Text)
With WsQ
.Range("B" & .Cells(i, 13).Value & ":AG" & .Cells(i, 14).Value).Copy _
WsZ.Cells(WsI.Cells(i, 8).Value, 1)
End With
WbZ.Save
WbZ.Close
Next i
End With
End Sub
LG
Michael
Anzeige
AW: Schleife in vers. Datein kopieren
05.05.2017 14:27:00
Christian
C3:

D:\Daten\Test\Datenbank\

D3:

#3I_D1.xlsx

E3:

#3I_D1
Bei M3 / N3 / H3 steht nur die zu verwendende Zelle drin. Ich schaue mir dein Makro gleich mal an und gebe dir Bescheid. Danke schonmal für deine Mühe, ich weiß das sehr zu schätzen!
AW: Schleife in vers. Datein kopieren
05.05.2017 14:32:13
Christian
Also er öffnet die erste Datei, was richtig ist aber
                .Range("B" & .Cells(i, 13).Value & ":AG" & .Cells(i, 14).Value).Copy _
WsZ.Cells(WsI.Cells(i, 8).Value, 1)
ab hier streikt er. Ich erkenne da auch keinen Fehler. Der Wert für i ist 3 was auch korrekt ist.
Anzeige
AW: Kann ich schwer testen...
05.05.2017 14:37:11
Michael
Christian ;-)
...was steht in M3? Ich bin davon ausgegangen, dass da nur eine Zahl steht für die Zeile...
Welcher Fehlermeldung erhältst Du?
Ggf. probier's so:
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim WsI As Worksheet: Set WsI = Wb.Worksheets("Tabelle1")
Dim WsQ As Worksheet: Set WsQ = Wb.Worksheets("Tabelle3")
Dim WbZ As Workbook, WsZ As Worksheet
Dim Pfad$, Datei$, i&, cpy$
Application.ScreenUpdating = False
With WsI
For i = 3 To .Cells(.Rows.Count, 3).End(xlUp).Row
Pfad = .Cells(i, 3)
Datei = .Cells(i, 4)
Set WbZ = Workbooks.Open(Pfad & Datei)
Set WsZ = WbZ.Worksheets(.Cells(i, 5).Text)
With WsQ
cpy = "B" & .Cells(i, 13).Value & ":AG" & .Cells(i, 14).Value
.Range(cpy).Copy WsZ.Cells(WsI.Cells(i, 8).Value, 1)
End With
WbZ.Save
WbZ.Close
Next i
End With
End Sub
LG
Michael
Anzeige
AW: Nein, vergiss meinen letzten Beitrag, das...
05.05.2017 14:38:27
Michael
Hallo Christian,
...es lag, glaub ich, an einer Unachtsamkeit von mir, mach mal so:
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim WsI As Worksheet: Set WsI = Wb.Worksheets("Tabelle1")
Dim WsQ As Worksheet: Set WsQ = Wb.Worksheets("Tabelle3")
Dim WbZ As Workbook, WsZ As Worksheet
Dim Pfad$, Datei$, i&, cpy$
Application.ScreenUpdating = False
With WsI
For i = 3 To .Cells(.Rows.Count, 3).End(xlUp).Row
Pfad = .Cells(i, 3)
Datei = .Cells(i, 4)
Set WbZ = Workbooks.Open(Pfad & Datei)
Set WsZ = WbZ.Worksheets(.Cells(i, 5).Text)
With WsQ
cpy = "B" & WsI.Cells(i, 13).Value & ":AG" & WsI.Cells(i, 14).Value
.Range(cpy).Copy WsZ.Cells(WsI.Cells(i, 8).Value, 1)
End With
WbZ.Save
WbZ.Close
Next i
End With
End Sub
LG
Michael
Anzeige
AW: Nein, vergiss meinen letzten Beitrag, das...
05.05.2017 18:15:42
Christian
Es funktioniert so wie gewünscht. Ich danke dir vielmals.
Ich wünsche dir ein schönes Wochenende :-)
AW: Super, freut mich, viel Erfolg noch! owT
05.05.2017 23:21:48
Michael

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige