AW: Excel dateien mit vba zusammenführen
30.07.2012 11:30:11
marcl
Hallo Bianca,
ich habe mal einen ungetesteten Code geschrieben. Es empfiehlt sich, mit Sicherungskopien zu arbeiten. Es kann gelegentlich sein, dass versehentlich in den Quelldateien etwas überschrieben wird. Ich habe überall die Endung .xls stehen. Dass und die Pfade müssten noch angepasst werden. Alles was mit _ getrennt und in neuer Zeile weitergeht, muss wieder zusammen in einer Zeile stehen.
Option Explicit
Public zeilenzähler As Long
Sub zusammen()
Dim masterdarstellung As String
Dim genehmigung_erteilt As Integer
zeilenzähler = 0
' Masterdarstellung öffnen
Workbooks.Open Filename:="DeinPfad /Masterdarstellung.xls.xls"
masterdarstellung = ActiveWorkbook.Name
' Einkauf öffnen
Workbooks.Open Filename:="DeinPfad /Einkauf.xls"
genehmigung_erteilt = 1 ' hier Spaltennumer eintragen
Call kopieren(genehmigung_erteilt, masterdarstellung)
Workbooks("Einkauf.xls").Activate
ActiveWorkbook.Close savechanges:=False ' Schließen ohne speichern
' Logistik öffnen
Workbooks.Open Filename:="DeinPfad /Logistik.xls"
genehmigung_erteilt = 1 ' hier Spaltennumer eintragen
Call kopieren(genehmigung_erteilt, masterdarstellung)
Workbooks("Logistik.xls").Activate
ActiveWorkbook.Close savechanges:=False ' Schließen ohne speichern
' Finanzen öffnen
Workbooks.Open Filename:="DeinPfad /Finanzen.xls"
genehmigung_erteilt = 1 ' hier Spaltennumer eintragen
Call kopieren(genehmigung_erteilt, masterdarstellung)
Workbooks("Finanzen.xls").Activate
ActiveWorkbook.Close savechanges:=False ' Schließen ohne speichern
End Sub
Sub kopieren(genehmigung_erteilt As Integer, masterdarstellung As String)
Dim zeile As Long
Dim spalte As Long
For zeile = 1 To ActiveSheet.UsedRange.Rows.Count ' Zeilen der Quelldeteien
If Cells(zeile, genehmigung_erteilt) "" Then ' Wenn Zelle "Genehmigung erteilt nicht _
leer ist"
For spalte = 1 To ActiveSheet.UsedRange.Columns.Count ' Spalten der Quelldateien
Workbooks(masterdarstellung).Sheets("Übersicht").Cells(zeilenzähler, spalte) _
= ActiveWorkbook.Sheets("Kosten").Cells(zeile, spalte)
zeilenzähler = zeilenzähler + 1 ' Zeilenzähler für Kopiervorgang in _
masterdarstellung um 1 erhöhen
Next spalte
End If
Next zeile
End Sub
Gruß
marcl