Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1908to1912
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
25.11.2022 08:31:18
Günther
Guten Morgen lieben VBA Profis,
ich bin kurz vor dem verzweifeln. Seit 2 Tagen versuche ich nun schon folgendes. Es sind zwei Aufgaben.
1. Ich möchte von einer geöffneten Excel Tabelle (Version_1.xlsm) ein definiertes Tabellenblatt ("Links") in eine andere Excel Tabelle (Version_2.xlsm) ohne Nachfrage importieren, also überschreiben.
2. In der Excel Tabelle (Version_1.xlsm) existieren ab Position 5 ca. 15 weitere Tabellenblätter (Anwender hat z.B. in den letzten Wochen 3 Tabellenblätter neu angelegt). Zuvor waren es also ab Pos. 5 nur 13 Tabellenblätter. Nun sollen ab Pos.5 alle Tabellenblätter eingelesen und nur die hinzugekommenen Tabellenblätter in die Excel Tabelle (Version_2.xlsm) importiert werden.
Ich habe bereits mit verschiedenen Ansätzen (ADOB.Connection oder sheets("xx").copy....) versucht eine Lösung zu finden....bin allerdings immer wieder, auch an meinen fehlenden VBA Kenntnissen gescheitert.
Ich würde mich ganz toll freuen, wenn Ihr mir hierzu eine Hilfe anbieten könntet.
Grüße aus Bayern
Günther

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt kopieren
25.11.2022 08:53:36
Oberschlumpf
Hi Günther,
zu 1.
der folgende Code MUSS in Datei "Version_1.xlsm" ausgeführt werden!

Sub Makro1()
' Makro1 Makro
With Workbooks("Version_2.xlsm")
Application.DisplayAlerts = False
.Sheets("Links").Delete
Sheets("Links").Copy Before:=.Sheets(1)
Application.DisplayAlerts = True
End With
End Sub
mit Application....= False werden die Meldungen, ob wirklich gelöscht werden soll, ausgeschaltet
mit .Sheets...Delete wird das Blatt "Links" in Datei "Version_2.xlsm" gelöscht
mit dem folgenden Copy-Befehl wird das Blatt "Links" in Datei "Version_1.xlsm" kopiert und in Datei "Version_2.xlsm" eingefügt
mit Application....= True werden alle Meldungen wieder eingeschaltet
zu 2.
da benötige zumindest ich von dir per Upload 2 Bsp-Dateien mit allem, was erforderlich ist, damit ich dein 2. Problem auch sehen kann
Konnte ich helfen?
...erstell Backup-Dateien, bevor du mit meinem Code arbeitest...
Ciao
Thorsten
Anzeige
AW: Tabellenblatt kopieren
25.11.2022 10:19:35
Günther
Hallo Thorsten,
hier die Beispieldatei von Version_1. Die Version_2 ist quasi die gleiche nur eben mit weniger Tabellenblätter.
https://www.herber.de/bbs/user/156388.xlsm
Grüße
Günther
AW: Tabellenblatt kopieren
25.11.2022 10:27:28
Oberschlumpf
du musst meine Idee für deine 1. Frage nich beantworten - aber cool wäre es schon! :-/
zu 2.
25.11.2022 10:38:39
Oberschlumpf
Hi,
du schreibst "...In der Excel Tabelle (Version_1.xlsm) existieren ab Position 5 ca. 15 weitere..."
In deiner Bsp-Datei ist das Blatt an 5. Stelle = "Tabelle4"
(an 6. Stelle = "Tabelle5")
Meinst du mit "...Nun sollen ab Pos.5 alle Tabellenblätter..." wirklich, dass, beginnend mit Blatt "Tabelle4" (5. Stelle), in Datei "Version_2.xlsm" alle Blätter geprüft, und wenn nicht vorhanden, eingefügt werden sollen?
Oder meinst du, dass erst ab Blatt "Tabelle5" oder ab Blatt "Muster1" in Datei "Version_2.xlsm" geprüft werden soll?
Ich frag deswegen lieber nach, weil ich schon oft erlebt habe, dass jemand etwas bestimmtes fragt, aber was anderes meint.
Ciao
Thorsten
Anzeige
AW: zu 2.
25.11.2022 10:59:12
Günther
Hallo Thorsten,
und wieder hast Du Recht. Natürlich ab "Muster1"
AW: zu 2.
25.11.2022 11:50:04
Oberschlumpf
Hi Günther,
füg den folgenden Code in Datei "Version_1.xlsm" in ein allgemeines Modul ein und beachte die Hinweise, die ich im Code als Kommentare hinterlassen habe

Sub sbCopyToOtherFile()
'die Zieldatei, du nennst sie "Version_2.xlsm" MUSS geöffnet sein!
Dim lwbTarget As Workbook
Dim liThis As Integer, lshTarget As Worksheet, lboExist As Boolean
Set lwbTarget = Workbooks("Version_2.xlsm") 'wenn deine geöffnete Zieldatei anders heißt, dann hier anpassen
With ThisWorkbook
For liThis = 7 To .Sheets.Count
For Each lshTarget In lwbTarget.Sheets
If .Sheets(liThis).Name = lshTarget.Name Then
lboExist = True
Exit For
End If
Next
If lboExist = True Then
lboExist = False
Else
.Sheets(liThis).Copy after:=lwbTarget.Sheets(lwbTarget.Sheets.Count)
End If
Next
End With
Set lwbTarget = Nothing
End Sub
Hilfts?
Mit deiner Bsp-Datei, von der ich eine Kopie als Datei2 erstellt habe, nachdem ich einige Blätter löschte, funktioniert mein Code tadellos.
Die in Datei2 fehlenden Blätter werden immer am Ende aller Blätter eingefügt.
Ciao
Thorsten
Anzeige
AW: zu 2.
25.11.2022 11:59:21
Günther
Hallo Thorsten,
PERFEKT! Genau das was ich gesucht habe. Was wäre die Welt ohne Euch Profis.
Besten Dank und ein schönes Wochenende.
Gruß
Günther
AW: zu 2.
25.11.2022 12:03:23
Oberschlumpf
a) freu mich natürlich, dass ich wieder mal helfen konnte
b) aber wieso dann noch als "offen" markiert?
AW: zu 2.
25.11.2022 12:18:19
Günther
OK
AW: Tabellenblatt kopieren
25.11.2022 10:54:11
Günther
Hallo Thorsten,
ich muss mich entschuldigen. Natürlich ist Deine Antwort zu 1. Mega. Funktioniert einwandfrei. Besten Dank. Ich muss leider noch nebenzu arbeiten und telefonieren, da geht schon mal was unter. Aber Du hast Recht. Manieren gehören auch hier dazu.
Günther

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige