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

Excel dateien mit vba zusammenführen

Excel dateien mit vba zusammenführen
Bianca
Hallo alle zusammen,
ich bin total verzweifelt. Ich soll für meine Firma eine Masterdarstellung vo 3 Excel Dateien anfertigen. Die sind aber alle unterschiedlich aufgebaut und ich kenn ich mich mit vba etc ohnehin nicht sehr gut aus.
ich habe also 3 Excel-Dateien Einkauf, Logistik und Finanzen. Und ich möchte jede Reihe von jedem Bereich in die Masterdarstellung kopieren - außer diejenigen wo die Spalte "Genehmigung erteilt" leer ist.
Ich bin schon soweit, dass die Dateien geöffnet werden. Aber ich scheitere schon beim Auslesen der Zeilenanzahl.
Kann mir jemand helfen?
Danke schon mal im Voraus!!!
Bianca
Excel dateien mit vba zusammenführen
30.07.2012 09:44:26
marcl
Guten Morgen Bianca,
ist das in jeder Exceldatei nur ein Arbeitsblatt? Soll das in der Masterdarstellung auch in jeweils ein separates Blatt?
Da gibt es verschiedene Lösungsansätze....
Gruß
marcl
AW: Excel dateien mit vba zusammenführen
30.07.2012 09:49:49
Bianca
Hallo Marcl,
es ist immer nur ein Arbeitsblatt in allen 3 Excel-Dateien namens "Kosten".
In der Masterdarstellung sollen alle Inhalte bis auf die, wo die Spalte Genehmigung erteilt leer ist, in der Tabellenblätter "Kosten" in ein Tabellenblatt "Übersicht" eingefügt werden.
AW: Excel dateien mit vba zusammenführen
30.07.2012 10:52:30
marcl
ok, also alles befüllte aus den 3 Einzeldateien auf 1 Blatt "Übersicht" in der Matserdarstellung. Und wenn alles kopiert wurde kommst Du auch nicht über die 1 Million Zeilen? Ist Deine Masterdarstellung als Datei schon vorhanden oder wird sie neu generiert?
Gruß
marcl
Anzeige
AW: Excel dateien mit vba zusammenführen
30.07.2012 11:41:05
Bianca
Hi Marcl,
erstmal vielen lieben Dank, dass du mir da hilfst!
ich komm ganz sicher nicht über die 1 Mio. Maximal 200 Reihen!
Die Masterdarstellung wird komplett neu generiert jedes Mal. Entweder durch den Start der Excel-Datei oder durch einen Button.
Liebe Grüße - und noch mal danke :)
Bianca
AW: Excel dateien mit vba zusammenführen
30.07.2012 13:54:26
marcl
Das hört sich doch gut an.
Wenn Du den unten geposteten Code verwendest, müssen dann noch kleine Ergänzungen vorgenommen werden:
Ganz oben über Sub kommt:
Option Explicit
Public zeilenzähler As Long
' Masterdarstellung öffnen
Workbooks.Add ' Neue Datei erstellen
ActiveWorkbook.SaveAs Filename:="Dein Pfad /Masterdarstellung.xlsb, Fileformat:=xlExcel12" masterdarstellung = ActiveWorkbook.Name
Gruß
marcl
Anzeige
AW: Excel dateien mit vba zusammenführen
31.07.2012 16:35:29
Bianca
Hallo Marcl,
super - du hast ja ganz schön viel arbeit reingesteckt. vielen Dank.
Ich bekomme aber leider einen Laufzeitfehler 9. Index außerhalb des gültigen Bereichs!
an der Stelle:
Workbooks(masterdarstellung).Sheets("Übersicht").Cells(zeilenzaehler, spalte) = ActiveWorkbook.Sheets("Kosten").Cells(zeile, spalte) in der Sub kopieren()
Hast du ne Ahnung woher das kommen könnte?
Danke schon mal!
Viele Grüße,
Bianca
AW: Excel dateien mit vba zusammenführen
01.08.2012 08:17:55
marcl
Guten Morgen,
ich habe einen Fehler gemacht.
For spalte = 1 To ActiveSheet.UsedRange.Columns.Count ' Spalten der Quelldateien
zeilenzähler = zeilenzähler + 1 ' Zeilenzähler für Kopiervorgang in masterdarstellung um 1 erhöhen
Workbooks(masterdarstellung).Sheets("Übersicht").Cells(zeilenzähler, spalte) = ActiveWorkbook.Sheets("Kosten").Cells(zeile, spalte)
Next spalte
Erst muss der Zeilenzähler gesetzt werden, da er sonst null ist. Und die Zeile mit der Zahl 0 kennt Excel nicht.
Gruß
marcl
Anzeige
AW: Excel dateien mit vba zusammenführen
30.07.2012 10:09:13
Bianca
Hallo Marcl,
es ist immer nur ein Arbeitsblatt in allen 3 Excel-Dateien namens "Kosten".
In der Masterdarstellung sollen alle Inhalte bis auf die, wo die Spalte Genehmigung erteilt leer ist, in der Tabellenblätter "Kosten" in ein Tabellenblatt "Übersicht" eingefügt werden.
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
Anzeige
AW: Excel dateien mit vba zusammenführen
30.07.2012 11:31:06
marcl
Option explicit und Public .... müssen ganz oben über dem Sub stehen !!

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige