AW: speichern
07.11.2005 17:44:13
Erich
Hallo Lisa,
mit deinem Beispiel wurde es schon deutlicher.
Du willst also die zu kopierenden Bereiche in "Datenbank.xls" nebeneinander haben. Das ist klar, wenn die Bereiche wir im Beispiel jeweils aus einer Zelle bestehen, und auch dann noch, wenn jeder Bereich mehrere Spalten, aber nur eine Zeile umfasst (z. B. C3:F3).
Wenn ein Bereich mehrere Zeilen hat (z. B. A3:A5 oder C3:F7), werden "Datenbank.xls" auch mehrere Zeilen verbraucht.
Welche Bereiche kopiert werden sollen, kannst du jetzt im Makro bei den Vorgaben festlegen. Dort bestimmst du auch, ob nur Werte (mit PasteSpecial) oder auch Formate und Formeln (normales Copy) kopiert werden sollen.
Sub KopieListeBereiche()
Dim wb As Workbook, anzRg As Integer, rng() As Range, ii As Integer
Dim iRow As Long, iCol As Integer, mitFormaten As Boolean
' ################################################# Vorgaben Anfang
anzRg = 3
ReDim rng(1 To anzRg) ' muss so bleiben
Set rng(1) = [A1]
Set rng(2) = [A10]
Set rng(3) = [c2]
mitFormaten = False
' ################################################# Vorgaben Ende
' Zielmappe öffnen
Set wb = Workbooks.Open(Filename:= _
"C:\Dokumente und Einstellungen\lisa\Desktop\Datenbank.xls")
With wb.Worksheets(1)
' erste freie Zeile des Zielblatts
iRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
While WorksheetFunction.CountBlank(.Rows(iRow)) < Columns.Count
iRow = iRow + 1
Wend
' Quellmappe aktivieren
ThisWorkbook.Activate
' Kopieren in ... ab Spalte A
iCol = 1
' Schleife über Bereiche
For ii = 1 To anzRg
If mitFormaten Then
rng(ii).Copy Destination:=.Cells(iRow, iCol)
Else
rng(ii).Copy
.Cells(iRow, iCol).PasteSpecial Paste:=xlValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End If
iCol = iCol + rng(ii).Columns.Count
' Werte in Quellbereich löschen
rng(ii).ClearContents
Set rng(ii) = Nothing
Next ii
Application.CutCopyMode = False
End With
' Zielmappe schließen+sichern
wb.Close SaveChanges:=True
' aufräumen
Cells(1, 1).Select
Set wb = Nothing
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort