AW: Daten aus externer Datei in Blatt kopieren
01.08.2011 20:58:17
fcs
Hallo braletta,
da nuss du dann mit entsprechenden Objektvariablen arbeiten, denen die die Objekte von Master- und Updateidatei zugewiesen werden.
Gruß
Franz
Sub Test()
'Testvariablen zum Finden der Datein
Dim sDatei, Zeile&, Spalte&, ZeileZ&, SpalteZ&
Const Pfad = "C:\Public\users\Test\Updates"
'Objekt-Variablen für Master-Datei und -Tabellenblätter
Dim wbMaster As Workbook
Dim wksMaster1 As Worksheet, wksMaster2 As Worksheet, wksMaster3 As Worksheet
'Objekt-Variablen für Update-Datei und -Tabellenblätter
Dim wbUpdate As Workbook
Dim wksUpdate1 As Worksheet, wksUpdate2 As Worksheet, wksUpdate3 As Worksheet
Dim rQuelle As Range
'Objekte der Masterdatei den Variablen zuordnen
Set wbMaster = Workbooks("Master.xls")
With wbMaster
Set wksMaster1 = .Worksheets("TabelleABC")
Set wksMaster2 = .Worksheets("TabelleDEF")
Set wksMaster3 = .Worksheets("TabelleGHI")
End With
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
'In einer Schleife die Update-Dateien öffnen und auswerten/auslesen
sDatei = Dir(Pfad & "\*.xls")
Do Until sDatei = ""
'Objekte einer Updatedatei den Variablen zuordnen
Set wbUpdate = Workbooks.Open(Pfad & "\" & sDatei, ReadOnly:=True) 'Parameter Reasonlx:= _
True _
dann verwenden, wenn in den Update-Dateien nichts geändert werden soll, sonst nicht.
With wbUpdate
Set wksUpdate1 = .Worksheets("TabelleABC")
Set wksUpdate2 = .Worksheets("TabelleDEF")
Set wksUpdate3 = .Worksheets("TabelleGHI")
End With
'Daten von Update-Blättern nach Master-Blättern übertragen - Beispielhaft
With wksUpdate1
Set rQuelle = .Range(Rows(2), .Rows(200))
'nur Werte kopieren - zum Beispiel wenn die Quelle Formeln enthält
rQuelle.Copy
wksMaster1.Range("A2").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
'oder alles nach Master kopieren
rQuelle.Copy Destination:=wksMaster1.Range("A2")
'Werte eines Zellenbereichs Zelle für Zelle übertragen
ZeileZ = 10 '1. Zeile in die Daten im Masterblatt eingetragen werden sollen
For Zeile = 2 To 200 'Zeile in Update, die ausgelsen werden sollen
SpalteZ = 4 '1. Spalte in die Daten im Masterblatt eingetragen werden sollen
For Spalte = 1 To 20 'Spalten in Update, die ausgelesen werden sollen
wksMaster1.Cells(ZeileZ, SpalteZ).Value = .Cells(Zeile, Spalte).Value
SpalteZ = SpalteZ + 1
Next Spalte
ZeileZ = ZeileZ + 1
Next Zeile
'Werte einzelner Zellen in Masterblatt übernehmen
wksMaster.Range("A1").Value = .Range("A1")
End With
'usw. für die anderen Blätter
'Updatedatei wieder schliessen ohne zu speichern
wbUpdate.Close saves´changes:=False
'nächste Update-Datei öffnen
sDatei = Dir
Loop
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub