Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1904to1908
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

Tabellenblatt kopieren

Tabellenblatt kopieren
16.11.2022 17:48:35
Ronald
Gruß an alle!
Ich möchte den kompletten Inhalt eines Tabellenblattes in ein anderes Excel kopieren. Quelle heißt Tabelle1 und Ziel auch Tabelle1. Alles funktioniert, also
es kommen auch Daten an, nur nicht in Tabelle1, wie ich das wollte. Es merkt irgendwie, daß Tabelle1 schon existiert und erstellt Tabelle1 (1) stattdessen.
Wie kann ich dies verhindern, sodaß er wirklich in das bestehende Tabellenblatt kopiert?
Danke im Voraus.
Gruß Ronald

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt kopieren
16.11.2022 17:56:12
Oberschlumpf
Hi Ronald,
du erstellst tatsächlich von "Tabelle1" eine Kopie und versuchst diese in der anderen Datei einzufügen.
Du musst aber "nur" den Zellbereich kopieren und in der anderen "Tabelle1" einfügen.
z Bsp so:

Workbook("Quelle").Sheets("Tabelle1").Range("A1:B4").Copy Workbook("Ziel").Sheets("Tabelle1").Range("A1")
anstelle "Quelle" = der Dateiname, wo die Daten herkommen
anstelle "Ziel" = der Dateiname, wo die Daten hinsollen
anstelle "A1:B4" = der Zellbereich, der in Quelle kopiert werden soll
anstelle "A1" = die Startzelle in "Ziel", wo die Daten eingefügt werden sollen
Hilfts?
Nein?
Dann zeig ne Bsp-Datei mit allem was erforderlch ist.
Ciao
Thorsten
Anzeige
AW: Tabellenblatt kopieren
16.11.2022 18:28:42
Ronald
Vielen Dank.
Das klingt sehr gut. Ich habe jetzt nur das Problem, daß ich den Range nicht kenne und daher mittels Funktion erst herausfinden und dann als Variable hinterlegen muß.
Das sieht dann so aus:

lngAnzahlZeilenQuelle = wksheetQuelle.Cells.SpecialCells(xlCellTypeLastCell).Row
lngAnzahlSpaltenQuelle = wksheetQuelle.Cells(1, Columns.Count).End(xlToLeft).Column
wkbookQuelle.Worksheets("Tabelle1").Range(Cells(1, 1, Cells(lngAnzahlSpaltenQuelle, lngAnzahlZeilenQuelle))).Copy wkbookZiel.Sheets("Tabelle1").Range("A1")
Die wahrscheinlich längste Codezeile der Welt, wenn sie denn funktionieren würde...
Beim Debuggen markiert er das erste "Cells" im Range und schreibt: Fehler beim Kompilieren. Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft. Ich muß zugeben: ich habe nicht gewußt, wie man den Range mittels zweier Variablen angibt. Daher hab ich hier nachgeguckt:

https://www.ms-office-forum.net/forum/showthread.php?t=286569
Im drittletzten Beitrag stehts. Obs richtig ist, weiß ich nicht, zumindest funktionierts so nicht, sodaß ich nochmals um Hilfe bitten muß.
Danke im Voraus.
Gruß Ronald
Anzeige
AW: Tabellenblatt kopieren
16.11.2022 19:44:50
ralf_b
cells(1,1), cells..... da fehlt nur eine Klammer hinter der 1
AW: Tabellenblatt kopieren
17.11.2022 17:13:35
Ronald
Hat leider nicht funktioniert. Ich habe die Klammer reingesetzt und dafür am Schluß eine weggenommen. So siehts nun aus:

wkbookQuelle.Worksheets("Tabelle1").Range(Cells(1, 1), Cells(lngAnzahlSpaltenQuelle, lngAnzahlZeilenQuelle)).Copy wkbookZiel.Sheets("Tabelle1").Range("A1")
Und als Fehlermeldung kam: "Anwendungs- oder objektdefinierter Fehler."
Gruß Ronald
AW: Tabellenblatt kopieren
17.11.2022 18:47:57
ralf_b

Cells(lngAnzahlSpaltenQuelle, lngAnzahlZeilenQuelle)
Hier ist Spaltenwert und Zeilenwert vertauscht. Ansonsten sieht da gut aus. Nur ob die (Objekt)Variablen richtig gefüllt sind kann ich von hier aus nicht beurteilen.
Anzeige
AW: Tabellenblatt kopieren
18.11.2022 08:26:11
Ronald
Ich hab die mal gedreht. Nun siehts so aus:

strPfadZumQuellExcel = Worksheets("Tabelle1").Cells(4, 5).Text
Workbooks.Open strPfadZumQuellExcel & "\Kontaktliste.xlsx"
Set wkbookQuelle = Workbooks("Kontaktliste.xlsx")
Set wksheetQuelle = wkbookQuelle.Worksheets("Tabelle1")
Set wkbookZiel = Workbooks.Open(strPfadZumQuellExcel & "\Kontaktliste Neu.xlsx")
Set wksheetZiel = wkbookZiel.Worksheets("Tabelle1")
wksheetZiel.UsedRange.ClearContents
lngAnzahlZeilenQuelle = wksheetQuelle.Cells.SpecialCells(xlCellTypeLastCell).Row
lngAnzahlSpaltenQuelle = wksheetQuelle.Cells(1, Columns.Count).End(xlToLeft).Column
wkbookQuelle.Worksheets("Tabelle1").Range(Cells(1, 1), Cells(lngAnzahlZeilenQuelle, lngAnzahlSpaltenQuelle)).Copy wkbookZiel.Sheets("Tabelle1").Range("A1")
wkbookQuelle.Close SaveChanges:=False
Er bringt dieselbe Fehlermeldung und beim Debuggen steht er wieder auf dem langen Kopierbefehl. Was könnte denn noch falsch sein?
Gibt es alternativ eine einfachere Möglichkeit, das Tabellenblatt zu kopieren, als den Inhalt über Range. Das Tabellenblatt selber würde er kopieren, aber da heißt es nicht mehr Tabelle1 sondern Tabelle1 (1). Ich denke mal laut: Könnte man das ganze Tabellenblatt dennoch kopieren und dann Tabelle1 löschen und anschließend Tabelle1 (1) in Tabelle1 umbenennen?
Danke im Voraus.
Gruß Ronald
Anzeige
AW: Tabellenblatt kopieren
18.11.2022 09:53:59
Oberschlumpf
und ich frag mich, wie lange es noch dauert, dass du meine Bitte, wenn meine Idee nicht funktioniert, eine Bsp-Datei mit allem, was erforderlich ist, per Upload zu zeigen, weiterhin ignorierst...
AW: Tabellenblatt kopieren
18.11.2022 10:15:43
Ronald
Ich bitte um Verzeihung. Ich hatte gehofft, ich kann diesen Umweg umgehen :-)
Bitte schau mal hier:

https://www.herber.de/bbs/user/156250.zip
Danke
Gruß Ronald
AW: Tabellenblatt kopieren
18.11.2022 11:04:04
Oberschlumpf
is ja nich schlimm^^...ich fragte nur noch mal, damit Andere dir vllt - besser - helfen können
AW: Tabellenblatt kopieren
18.11.2022 11:04:35
Oberschlumpf
is ja nich schlimm^^...ich fragte nur noch mal, damit Andere dir vllt - besser - helfen können
Anzeige
Umwege erhöhen die Ortskenntnis owt
18.11.2022 21:10:02
ralf_b
AW: Tabellenblatt kopieren
18.11.2022 21:25:35
ralf_b

With wksheetQuelle
.Range(.Cells(1, 1), .Cells(lngAnzahlZeilenQuelle, lngAnzahlSpaltenQuelle)).Copy wksheetZiel.Range("A1")
.Parent.Close SaveChanges:=False
End With

AW: Tabellenblatt kopieren
22.11.2022 09:21:16
Ronald
Danke schön. Ich habs umgesetzt. Das mit dem Kopieren funktioniert einwandfrei. Aber es passiert etwas anderes, was mir nicht in den Kopf will.
Siehe hier: https://www.herber.de/bbs/user/156310.zip
Ich habe da das Projekt nochmals mit den neuen Änderungen hochgeladen und ebenfalls ein Video, welches sehr gut zeigt, daß
die Schleife nicht funktioniert, weil die Übergabe der Zeilennummer nicht funktioniert und deswegen er in der falschen Zeile beginnt.
Übergabe der Zeilennummer heißt:

Variable2 = Variable1
'Variable 2 hat Wert 10 und Variable1 den Wert 7. Und dies laut Debuggen.
Dazu kann ich nur noch sagen: Hää?
Hoffe, das ist irgendwie erklärbar. Ansonsten fang ich mit zweifeln an.
Danke und Gruß
Ronald
Anzeige
AW: Tabellenblatt kopieren
22.11.2022 18:57:20
ralf_b
Kann ich bei mir nicht nachvollziehen.
Aber die Schleife nutzt Worksheets ohne die Referenz auf die Mappe. und ActiveCell ist immer aus der aktiven Mappe.
Ich rate dazu nicht so sehr auf globale Variablen zu setzen, sondern eher auf parametrisierte Funktionen.
Datumskonvertierung, Umwandlung, SpeichereWert nutzen auch die Activecell.

Private Sub Datumskonvertierung(rng As Excel.Range)
'von 12.07.2022 in 2022-07-12
If rng  vbNullString Then
rng = CDate(rng)
rng.NumberFormat = "YYYY-mm-dd"
End If
End Sub
aufrufen in der Schleife

call  Datumskonvertierung(c)
und den Schleifenzähler (hier c) solltest du definitiv nicht als Globale Variable setzen.
der wird im Makro mit

 Dim c as Range
definiert.
Anzeige
AW: Tabellenblatt kopieren
23.11.2022 10:43:24
Ronald
Danke für Deine Antwort! Das war eine große Hilfe. Ich hab das Projekt entsprechend angepaßt und es läuft nun bis auf etwas Eigenartiges. Etwas, was ich nicht nachvollziehen kann.
- es kopiert den Inhalt des kompletten Tabellenblattes aus Kontaktliste in Kontaktliste Neu
- es schließt Kontaktliste
- es wandelt mittels Schleife das jeweilige Datum in Spalte L ins US-Format und anschließend in KW/Jahr-Format
- es speichert den jeweiligen KW/Jahr-Wert in der jeweiligen Zelle - aber nicht immer, obwohl es das beim Debuggen einwandfrei macht. Da zeigt es die jeweilige
Spalte, in der der Wert rein soll und auch den erwarteten Wert. Also alles gut. Und wenn ich dann die Datei Kontaktliste Neu aufmache, um mir das Ergebnis anzusehen, dann sieht es anders aus. Das ist mir echt zu hoch.
### Ursprungswerte aus Spalte L von Kontaktliste:
31.12.2099
03.03.2025
04.04.2026
05.05.2027
06.06.2008
27.01.2023
### Ergebnis, wie es in Spalte L der Kontaktliste Neu nachher zu sehen ist:
53/2099
2025-10-01
14/2026
18/2027
23/2008
2023-04-01
### Ergebnis, wie man es eigentlich in Spalte L der Kontaktliste erwarten würde:
53/2099
10/2025
14/2026
18/2027
23/2008
4/2023
Ich weiß mir keinen Rat mehr. Hoffe, jemand hier kann des Rätsels Lösung aufdecken, auch wenn es eigentlich hier nicht mehr zum Thema (laut Thema des Forumsthread) paßt, so ists doch fortlaufend vom Programminhalt her.
Danke im Voraus.
Gruß Ronald
PS. Hier ist das aktuelle Projekt: https://www.herber.de/bbs/user/156344.zip
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige