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

Ranges untereinander kopieren in loop(WB+WS)

Ranges untereinander kopieren in loop(WB+WS)
27.06.2013 10:09:05
Tobias
Hallo!
Ich habe eine Frage und hoffe mir kann jemand helfen.
Ich habe einen Ordner mit 10 .xls Dateien, die öffnen ich nacheinander (das klappt) jetzt möchte ich falls in Cells(11,1) etwas steht die letzte Zeile und die letzte Spalte ermitteln und den damit eingrenzenden Bereich in das erste Worksheet des Workbooks kopieren, in dem der VBA Code steht. Dies soll für alle Tabs zwischen 3 und 14 geschehen. Die Ranges die aus den Tabs kopiert werden sollen dann untereinander eingefügt werden. Dann gehts zum nächsten Workbook und das gleiche Spielt geht von vorne los, so dass ich alle Ranges aus den Workbooks untereinander habe.
Mein Code dazu funktioniert leider nicht. Er läuft zwar durch, kopiert aber nichts rüber:
Sub test()
Dim oFSO As Object
Dim oFolder As Object
Dim oFile As Object
Dim wbQuelle As Workbook
Dim folderpath As String
Dim i As Integer
folderpath = "C:\test"
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(folderpath)
For Each oFile In oFolder.Files
If Right(oFile.Name, 3) = "xls" Then
Application.ScreenUpdating = False
End If
Set wbQuelle = Workbooks.Open(oFile.path)
call action2()
wbQuelle.Close
Next
'Application.ScreenUpdating = True
End Sub
Sub aktion2()
Dim letzteZeileA As Long
Dim letzteSpalteA As Long
Dim letzteZeileThisWB As Long
Dim i As Integer
Dim strBereich As String
Dim relevanteTabs As Integer
For relevanteTabs = 3 To 14
With ActiveWorkbook.Worksheets(relevanteTabs)
letzteZeileA = .Cells(Rows.Count, 1).End(xlUp).Row
letzteSpalteA = .Cells(1, Columns.Count).End(xlToLeft).Row
letzteZeileThisWB = ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp). _
Row
If .Range(.Cells(11,1))  "" then
strBereich = .Range(.Cells(11, 1), .Cells(letzteZeileA, letzteSpalteA))
.Range(strBereich).Copy
ThisWorkbook.Worksheets(1).Cells(1, letzteZeileThisWB + 1).PasteSpecial Past:= _
xlPasteValues, operation:=xlNone, _
skipblanks:=False, Transpose:=False
end if
End With
Next relevanteTabs
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ein Haufen Fehler
27.06.2013 10:24:27
Rudi
Hallo,
call action2()
die Prozedur gibt es nicht. Die heißt aktion2.
If Right(oFile.Name, 3) = "xls" Then
Application.ScreenUpdating = False
End If
Set wbQuelle = Workbooks.Open(oFile.path)
call action2()
wbQuelle.Close
Next

Das End If gehört hinter wbQuelle.Close, sonst werden alle Dateien geöffnet.
letzteSpalteA = .Cells(1, Columns.Count).End(xlToLeft).Row
das muss .Column heißen.
strBereich = .Range(.Cells(11, 1), .Cells(letzteZeileA, letzteSpalteA)).Address
).PasteSpecial Paste:= _
Sub test()
Dim oFSO As Object
Dim oFolder As Object
Dim oFile As Object
Dim wbQuelle As Workbook
Dim folderpath As String
Dim i As Integer
folderpath = "C:\test"
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(folderpath)
For Each oFile In oFolder.Files
If Right(oFile.Name, 3) = "xls" Then
Application.ScreenUpdating = False
Set wbQuelle = Workbooks.Open(oFile.Path)
aktion2 wbQuelle
wbQuelle.Close False
End If
Next
End Sub
Sub aktion2(wkb As Workbook)
Dim letzteZeileA As Long
Dim letzteSpalteA As Long
Dim letzteZeileThisWB As Long
Dim i As Integer
Dim relevanteTabs As Integer
For relevanteTabs = 3 To 14
With wkb.Worksheets(relevanteTabs)
letzteZeileA = .Cells(Rows.Count, 1).End(xlUp).Row
letzteSpalteA = .Cells(1, Columns.Count).End(xlToLeft).Column
letzteZeileThisWB = ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row
If .Range(.Cells(11, 1))  "" Then
.Range(.Cells(11, 1), .Cells(letzteZeileA, letzteSpalteA)).Copy
ThisWorkbook.Worksheets(1).Cells(1, letzteZeileThisWB + 1).PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, _
skipblanks:=False, Transpose:=False
End If
End With
Next relevanteTabs
End Sub
Gruß
Rudi

Anzeige
AW: Ranges untereinander kopieren in loop(WB+WS)
27.06.2013 10:40:23
UweD
Hallo
so dürfte es gehen.
Er läuft zwar durch, kopiert aber nichts rüber:
hätte eigentlich Fehler zeigen müssen
Überflüssiges habe ich bei der Gelegenheit auch noch rausgenommen.
Sub test()
Dim oFSO As Object
Dim oFolder As Object
Dim oFile As Object
Dim wbQuelle As Workbook
Dim folderpath As String
folderpath = "C:\test"
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(folderpath)
Application.ScreenUpdating = False
For Each oFile In oFolder.Files
If Right(oFile.Name, 3) = "xls" Then
'If Right(oFile.Name, 4) = "xlsx" Then
Set wbQuelle = Workbooks.Open(oFile.Path)
Call action2
wbQuelle.Close
End If
Next
Application.ScreenUpdating = True
End Sub
Sub action2()
Dim letzteZeileA As Long
Dim letzteSpalteA As Long
Dim letzteZeileThisWB As Long
Dim relevanteTabs As Integer
For relevanteTabs = 3 To 4 '14
With ActiveWorkbook.Worksheets(relevanteTabs)
letzteZeileA = .Cells(Rows.Count, 1).End(xlUp).Row
letzteSpalteA = .Cells(1, Columns.Count).End(xlToLeft).Column
letzteZeileThisWB = ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp). _
Row
If .Cells(11, 1)  "" Then
.Range(.Cells(11, 1), .Cells(letzteZeileA, letzteSpalteA)).Copy
ThisWorkbook.Worksheets(1).Cells(letzteZeileThisWB + 1, 1).PasteSpecial _
Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:= _
False
End If
End With
Next relevanteTabs
End Sub
Gruß UweD

Anzeige
AW: Ranges untereinander kopieren in loop(WB+WS)
27.06.2013 10:52:17
Tobias
Herzlichen Dank euch beiden! Funktioniert und ich habe mal wieder was gelernt!
VG

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige