Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
904to908
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
904to908
904to908
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Tabellen kopieren

Tabellen kopieren
07.09.2007 10:47:30
Philipp
Hallo!
Stehe vor folgendem problem. Ich möchte via Makro aus einer anderen Datei die ersten 4 Tabellenblätter kopieren und auf Tabellenblatt 8 in der aktuellen Datei einfügen. Die Tabellenblätter sollen dann untereinander eingefügt werden. Beginnen soll er mit dem Einfügen in der zweiten Zeile, da in der ersten schon was steht.
Also folgendes Szenario:
Ich starte das Makro in Tabellenblatt 1 der Datei test1.xls
Öffne Datei test2.xls
Kopiere Inhalt aus Tabellenblatt 1
Füge Inhalte in Tabellenblatt8 der Datei test1.xls ein (beginne in Zeile2)
Kopiere Inhalt aus Tabellenblatt 2
Füge Inhalte in Tabellenblatt8 der Datei test1.xls ein (unterhalb des davor eingefügten)
Kopiere Inhalt aus Tabellenblatt 3
Füge Inhalte in Tabellenblatt8 der Datei test1.xls ein (unterhalb des davor eingefügten)
Kopiere Inhalt aus Tabellenblatt 4
Füge Inhalte in Tabellenblatt8 der Datei test1.xls ein (unterhalb des davor eingefügten)
Schließe test2.xls
Hoffe das is machbar.
LG Philipp

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellen kopieren
07.09.2007 11:38:00
fcs
Hallo Philipp,
die Kopieraktionen sind machbar.
Pfad/Dateinamen und ggf. Blattnamen im folgende Beispiel muss du anpassen.
Gruß
Franz

Sub Test()
Dim wbQuelle As Workbook, wksQuelle As Worksheet, Block As Range
Dim wbZiel As Workbook, wksZiel As Worksheet, ZeileZiel As Long
Set wbZiel = ActiveWorkbook
Set wksZiel = wbZiel.Worksheets(8) 'statt 8 ggf. Namne des Blattes in Anführungszeichen
ZeileZiel = 2
Application.ScreenUpdating = False
Set wbQuelle = Workbooks.Open(Filename:="C:\Lokale Daten\Test\Mappe1.xls", ReadOnly:=True)
For i = 1 To 4
Set wksQuelle = wbQuelle.Worksheets(i)
With wksQuelle
Set Block = .Range(.Cells(1, 1), .Cells.SpecialCells(xlLastCell))
Block.Copy
wksZiel.Cells(ZeileZiel, 1).PasteSpecial Paste:=xlFormats
wksZiel.Cells(ZeileZiel, 1).PasteSpecial Paste:=xlValues
ZeileZiel = ZeileZiel + Block.Rows.Count
End With
Next
Application.CutCopyMode = False
wbQuelle.Close savechanges:=False
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Tabellen kopieren
07.09.2007 12:33:23
Philipp
Hi! Danke erstmal für die Antwort.
Aber irgendwie öffnet er bei dem Makro zwar die zu kopierende Datei, doch danach geschieht gar nix mehr...

AW: Tabellen kopieren
07.09.2007 13:24:27
Philipp
Also es scheint so zu sein, dass er die Datei öffnet, danach aber nichts mehr tut. Weil wenn ich eine MsgBox innerhalb der for Schleife reintu, führt er diese nicht aus!
Bitte um Hilfe.

AW: Tabellen kopieren
07.09.2007 13:58:38
Philipp
So ich muss mir nochmal selbst antworten. Die Problematik ist anscheinend, dass er beim öffnen der neuen Datei, sofort in diese springt und das Makro nicht mehr weiter ausführt. Obwohl eigentlich ScreenUpdating = False is.
Bitte rbauch dringend eine Antwort.

Anzeige
noch offen, oT
07.09.2007 14:04:00
Philipp

AW: noch offen, oT
07.09.2007 15:01:00
Wolli
Hallo Philipp,
1.) nimm das "Application.ScreenUpdating = False" erstmal raus, dann siehst Du, was passiert und was nicht. (Hochkomma davor zum Auskommentieren)
2.) Natürlich springt er beim öffnen gleich in die frisch geöffnete Mappe. Dennoch müsste das Makro weiterhin ausgeführt werden.
3.) Durchlaufe das Makro im Einzelschrittmodus. (Cursor in den Code stellen, schrittweise mit F8 abarbeiten.) Dann siehst Du, wo's hakt.
Viel Glück, Wolli

AW: noch offen, oT
07.09.2007 15:08:40
Peter
Hallo Phillipp,
ich habe das Makro eben unter Excel 2000 getestet und ein einwandfreies Ergebnis bekommen.
Geh mal in das Makro und starte es mit Debuggen - Einzelschritt - F8.
Dann sollte es komplett das tun, was du möchtest, und du kannst den Ablauf verfolgen.
Gruß Peter

Anzeige
AW: noch offen, oT
07.09.2007 15:12:00
fcs
Hallo Philipp,
ich hab keine Ahnung warum es nicht funktionieren sollte. Bei mir unter Excel 2003/Win XP läuft das Makro reibungslos. Egal ob ich das Makro in der Zieldatei (Aktive Datei in die die inhalte kopiert werden sollen) oder in der Persönlichen Makroarbeitsmappe in einem Modul gespeichert wird. Der Bildschirmflackert einmal kurz und dann wird die Tabelle 8 mit edn kopierten daten angezeigt und der letzte eingefügte Bereich ist markiert.
Die Variable i ist zwar nicht deklariert worden (ergänze in einer der Dim Zeilen: i As Integer) aber daran kann es nicht liegen, dann müßtest du eine entsprechende Fehlermeldung erhalten.
Soweit ich das sehe sind auch keine Funktionen im Code, die Excel 2000 noch nicht kennt. Ich stehe vor einem Rätsel.
Was passiert denn, wenn du das Makro im Schrittmodus ausführst. Ich kann mir nicht vorstellen, dass das die For...Next-Schleife nicht ausführt wird. Ist in der geöffneten Datei der Blattschutz aktiv oder sind verbundene Zellen enthalten oder sonst irgendetwas exotisches was das Kopieren stören könnte.
Gruß
Franz

Anzeige
AW: noch offen, oT
10.09.2007 07:56:49
Philipp
Hallo,
So, danke mal für die Rückmeldungen!
Jedenfalls neue Woche neues Glück, wie es mir scheint. Hab eben den PC gestartet, es nochmal ausprobiert und siehe da es haut hin, aber nur bis zu einem gewissen Punkt.
Bei dieser Zeile:
wksZiel.Cells(ZeileZiel, 1).PasteSpecial Paste:=xlValues
sagt er: "Für diese Aktion müssen alle verbundenen Zelle die selbe Größe haben".
Kann man dieses Problem irgendwie umgehen? Weil wenn ichs jetzt händisch kopiere und manuell nur die Werte einfüge, haut alles problemlos hin.
LG
Philipp

AW: noch offen, oT
10.09.2007 09:25:00
fcs
Hallo Philipp,
Excel nennt doch das Problem:
sagt er: "Für diese Aktion müssen alle verbundenen Zelle die selbe Größe haben".
Kann man dieses Problem irgendwie umgehen? Weil wenn ichs jetzt händisch kopiere und manuell nur die Werte einfüge, haut alles problemlos hin.

Vermeide möglichst verbundene Zellen (z.B. Verwendung von horizontal Zellformat "Zentriert über Auswahl") in Tabellen; sie bereiten bei der Automatisierung und einigen anderen Funktionen in Excel nur Kummer.
Folgende Variante des Makros scheint resistent gegen verbundene Zellen zu sein:

Sub Test()
Dim wbQuelle As Workbook, wksQuelle As Worksheet, Block As Range
Dim wbZiel As Workbook, wksZiel As Worksheet, ZeileZiel As Long
Set wbZiel = ActiveWorkbook
Set wksZiel = wbZiel.Worksheets(2) 'statt 8 ggf. Namne des Blattes in Anführungszeichen
ZeileZiel = 2
Application.ScreenUpdating = False
Set wbQuelle = Workbooks.Open(Filename:="C:\Lokale Daten\Test\Mappe1.xls", ReadOnly:=True)
For i = 1 To 4
Set wksQuelle = wbQuelle.Worksheets(i)
With wksQuelle
Set Block = .Range(.Cells(1, 1), .Cells.SpecialCells(xlLastCell)).EntireRow
Block.Copy Destination:=wksZiel.Cells(ZeileZiel, 1)
wksZiel.Range(wksZiel.Rows(ZeileZiel), wksZiel.Rows(ZeileZiel + Block.Rows.Count - 1)). _
Copy
wksZiel.Range(wksZiel.Rows(ZeileZiel), wksZiel.Rows(ZeileZiel + Block.Rows.Count - 1)). _
PasteSpecial Paste:=xlValues
ZeileZiel = ZeileZiel + Block.Rows.Count
End With
Next
Application.CutCopyMode = False
wbQuelle.Close savechanges:=False
Application.ScreenUpdating = True
End Sub


Gruß
Franz

Anzeige
AW: noch offen, oT
10.09.2007 10:02:38
Philipp
Hallo!
Danke, funzt bis auf ein großes Problem!
Und zwar kopiert er auch die Formatierungen, möchte aber nur die Werte kopieren.
LG

AW: noch offen, oT
10.09.2007 10:50:43
Philipp
Also, hab jetzt echt alles probiert langsam. Die Formatierungen im Nachhinein löschen, haut auchnet hin, weil die verbundenen Zellen dann bleiben under wieder stresst wenn ich das nächste einfügen will. Also die einzige Möglichkeit ist wohl nur die Werte einzufügen, und das zwar gleich, aber kA wieso das nicht funzt.
Bitte um Hilfe, is echt dringend.
LG

AW: noch offen, oT
10.09.2007 11:00:55
Philipp
Sooooo noch ne neue Erkenntnis: Wenn ich ZeileZiel auf z.B 350 ändere gehts auch net...was kann das bitte sein?

Anzeige
AW: noch offen, oT
10.09.2007 11:08:37
fcs
Halo Philipp,
schmeiss in deinen Tabellen die verfluchten verbundenen Zellen raus!!!
Ansonsten hier noch die Übertragung der Werte Zelle für Zelle, die scheint auch bei den verbundenen Zellen keine Probleme zu machen. Dauert halt etwas länger.
Gruß
Franz

Sub TestCopyB()
Dim wbQuelle As Workbook, wksQuelle As Worksheet, Block As Range
Dim wbZiel As Workbook, wksZiel As Worksheet, ZeileZiel As Long, Zeile As Long
Set wbZiel = ActiveWorkbook
Set wksZiel = wbZiel.Worksheets(8) 'statt 8 ggf. Namne des Blattes in Anführungszeichen
ZeileZiel = 2
Application.ScreenUpdating = False
Set wbQuelle = Workbooks.Open(Filename:="C:\Lokale Daten\Test\Mappe1.xls", ReadOnly:=True)
For i = 1 To 4
Set wksQuelle = wbQuelle.Worksheets(i)
With wksQuelle
Set Block = .Range(.Cells(1, 1), .Cells.SpecialCells(xlLastCell))
For Zeile = 1 To Block.Rows.Count
For Spalte = 1 To Block.Columns.Count
wksZiel.Cells(ZeileZiel + Zeile - 1, Spalte).Value = Block(Zeile, Spalte).Value
Next
Next
ZeileZiel = ZeileZiel + Block.Rows.Count
End With
Next
wbQuelle.Close savechanges:=False
Application.ScreenUpdating = True
End Sub


Anzeige
AW: noch offen, oT
10.09.2007 11:27:39
Philipp
Okay das dauert vieeeel zu lange.
Ich kann leider die verbundenen Zellen nicht löschen, da das File vorgegeben ist und nicht von mir verändert werden kann!
Aba ich brauche keine verbundenen Zeilen zum kopieren, also falls es ne möglichkeit gibt, dass ich nur unverbundene Zellen kopiere, wär das auch okay.

AW: noch offen, oT
10.09.2007 11:45:00
Philipp
Okay,. lustigerweise scheine ich agr keine verbundenen Zellen zu kopieren. ALso ejdenfalls kommt immer folgender Fehler:
"Die Informationen können nicht eingefügt werden, da der Bereich Kopieren und der Bereich Einfügen unterschiedliche Formen und Größen haben. Versuchen sie folgendes:
* Markieren Sie eine einzelne Zelle und klicken sie dann einfügen
* Markeiren Sie einen Bereich der die selbe Form und Größe hat und klicken sie dann einfügen
In folgender Zeile markiert er mirs beim debuggen:
Block.Copy Destination:=wksZiel.Cells(ZeileZiel, 1)
Also wenn ich i=1 to 1 mach funtzts problemlos, aber sobald er mehr worksheets kopieren willg ehts net :(

Anzeige
AW: noch offen, oT
10.09.2007 13:17:00
fcs
Hallo Philipp,
bei mir funktionieren die verschiedenen Varianten einwandfrei. Am Ende stehen immer Werte in den Zellen mal mit, mal ohne Formatierung.
Falls du keine Formate kopieren möchtest, dann kannst du nach dem Übertragen der Werte die Formate auch mit
wksZiel.cells.ClearFormats
löschen.
Wenn das Übertragen der Werte Zelle für Zelle zu langsam geht, dann kann ich dir leider auch nicht mehr weiterhelfen. Und was solls wenn die Datenübertragung etwas länger dauert; dann gönn dir ne Tasse Kaffe oder einen Spaziergang um den Block.
Irgendwie scheinen deine Vorlagedateien ja sehr miserabel aufgebaut/formatiert zu
sein, dass sie sich gegen Kopiervorgänge so sehr sträuben.
Gruß
Franz

Anzeige
AW: noch offen, oT
10.09.2007 14:10:00
Philipp
So vielen Dank für die ganze Hilfe, hab jetzt doch ein wenig herumformatiert in dem File und naja es geht nun.
Also vielen Dank für die Mühe!
lg

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige