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

Tabellenblatt kopieren - Objektinhalte verloren
29.05.2018 22:48:29
Jan
Liebe Forummitglieder,
auch dank oft hervorragender Antworten hier im Forum habe ich es geschafft, ein mittlerweile recht aufwendiges VBA Projekt hochzuziehen. Gerade hänge ich jedoch an einem Problem, das mir Kopfzerbrechen bereitet und für das ich keine Lösung finden kann:
Ich möchte ein Tabellenblatt in eine neue Arbeitsmappe kopieren. Nichts leichter als das. Das Problem: Dieses Tabellenblatt enthält diverse Comboboxen (ActiveX-Elemente), die bereits vor dem Kopieren mit Inhalt gefüllt wurden (sowohl Auswahlmöglichkeiten als auch anzuzeigender ListIndex).
Nun stelle ich fest, dass die neue Arbeitsmappe mit besagtem Tabellenblatt zwar die für die Anzeige gewählten ListIndex-Werte mitbekommen hat (die Anzeige sieht damit zunächst einmal richtig aus), die Comboboxen aber nicht mehr die zuvor festgelegten Auswahlmöglichkeiten beihalten.
Zunächst wäre daher die Frage: Versuche ich hier etwas, was grundsätzlich nicht gehen kann? Heißt: Müssen in Excel die Comboboxen bei jedem Start neu initialisiert werden oder lassen sich die Inhalte irgendwie beim Kopieren des Tabellenblatts übertragen?
Und: Nachdem ich hier auf Granit gebissen habe, bin ich einen anderen Weg gegangen (wie ich finde unelegant): Ich wollte die Neuinitialisierung beim Öffnen der neuen Arbeitsmappe erzwingen. Allerdings führt hier Workbook_Activate() zu nichts, da dieser Befehl beim Öffnen der Arbeitsmappe nicht ausgeführt wird. Workbook_Open() dagegen existiert nicht, da es sich eben um ein kopiertes Worksheet handelt, was diesen Befehl nicht enthalten kann.
Für jeden Hinweis, der meine Ratlosigkeit ein Stück nimmt, bin ich unendlich dankbar.
Beste Grüße, Jan

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt kopieren - Objektinhalte verloren
29.05.2018 22:53:31
Daniel
HI
dann werde bitte etwas genauer:
wie kopierst du das Tabellenblatt?
wie bekommen in der Originaltabelle die Comboboxen ihre Inhalte, da gibt es ja verschiedene Möglichkeiten.
Gruß Daniel
AW: Tabellenblatt kopieren - Objektinhalte verloren
29.05.2018 23:16:29
Jan
Hallo Daniel,
beim Auslösen des Befehls zum Erstellen der Kopie ("TMS Detail") werden zunächst die Comboboxen mit Inhalt aus dem Quellblatt gefüllt (hier mal vereinfacht):
With Worksheets("TMS Detail")
With .Combobox_Text
.Clear
.AddItem ("Eintrag 1")
.AddItem ("Eintrag 2")
.AddItem ("Eintrag 3")
.ListIndex = 0
End With
End With
Der Befehl zum Kopieren erfolgt dann per
Call Worksheets("TMS Detail").Copy
Die Kopie wird anschließend nach dem Import von Modulen (s. u.) noch gespeichert:
Call WkbSource.SaveAs(filename:="C:\Users\jze\Desktop\Vib-Messaufgabe" & _
"\TMS-Detailblatt", FileFormat:=xlOpenXMLWorkbookMacroEnabled)
Die Originaldatei sieht anschließend aus wie gewünscht: Alle Comboboxen sind mit Auswahlmöglichkeiten gefüllt, bloß die Kopie beinhaltet nur die per .ListIndex gesetzten Werte, nicht aber die anderen Auwahloptionen.
Zu Punkt 2: Neuinitialisierung der Kopie:
Damit später, wenn ich die Kopie öffne, eine Neuinitialisierung möglich sein kann, gebe ich dem neuen Workbook noch ein paar Module mit:
With .VBProject
.VBComponents.Import sPath & "AddItem.bas"
.VBComponents.Import sPath & "Buttons.bas"
.VBComponents.Import sPath & "Utilities.bas"
.VBComponents.Import sPath & "Functions.bas"
End With
Kann es sein, dass es auch dabei zum Konflikt kommt? Denn: In dem Moment, wo ich die Kopie erstelle und Module in diese importiere, sind zwei Dateien geöffnet, die über eine Schnittmenge an gleich benannten Modulen verfügen.
Besten Dank und Gruß, Jan
Anzeige
AW: Tabellenblatt kopieren - Objektinhalte verloren
30.05.2018 07:53:07
Jan
Nachtrag:
Nachdem ich noch ein wenig drüber gegrübelt habe, bin ich zu dem Schluss gekommen, dass es überschauberer wird, wenn ich von vornherein mit zwei Dateien arbeite (WkbSource, WkbTarget), anstatt online das WkbTarget durch Kopieren eines Tabellenblatts zu erzeugen.
Die Thematik ist damit aber nicht aus der Welt. Das zeigt ein einfacher Test:
Diese Arbeitsmappe:
Private Sub Workbook_Open()
Call Tabelle1.Initialize
End Sub
Tabellenblatt:
Sub Initialize()
If Cells(1, 1) = 1 Then
Call Modul1.Fill(ComboBox1)
End If
End Sub
Modul:
Sub Fill(Cb As ComboBox)
With Cb
.AddItem ("Test 1")
.AddItem ("Test 2")
.AddItem ("Test 3")
.ListIndex = 1
End With
End Sub
Hier steuere ich über die Zelle A1, ob eine Initialisierung ausgeführt werden soll oder nicht. Öffnet man nun die Datei mit Zellwert 1, so findet man entsprechend eine ausgefüllte Combobox vor. Trägt man nun 0 in A1 ein, schließt und öffnet die Datei neu, so ist zwar der zuletzt gesetzte .ListIndex sichtbar, die Auswahlmöglichkeiten aber nicht. Excel scheint diese Information beim Speichern des Dokuments also nicht mit abzulegen.
Das finde ich ein wenig doof. Dazu muss man noch etwas über meine Anwendung wissen: Auf meinem Tabellenblatt gibt es eine Combobox, die eine mögliche Auswahl von Maschinen beinhalet. Aus dieser Liste kann der Nutzer per "übernehmen"-Button die auswählen, welche er verwenden möchte. Diese Auswahl wird in einer zweiten Combobox gespeichert. Nun ist es natürlich blöd, wenn diese vom Nutzer zusammengestellte Liste beim Schließen der Datei wieder verloren geht. Ich sehe da gerade nur eine Lösung: Beim Schließen der Datei müssen alle Combobox-Inhalte in (verstecken) Hilfszellen auf dem Arbeitsblatt gespeichert werden, sodass sie beim Öffnen wieder eingelesen werden können. Schön ist anders...
Eine einfache Muster-Datei habe ich mal mit angefügt.
Vielen Dank und Gruß, Jan
https://www.herber.de/bbs/user/121885.xlsm
Anzeige
AW: Tabellenblatt kopieren - Objektinhalte verloren
30.05.2018 20:55:25
Jan
Wie es mir scheint, gilt die Frage fälschlicherweise als geklärt?
AW: Tabellenblatt kopieren - Objektinhalte verloren
30.05.2018 21:16:52
Mullit
Hallo,
tja so sieht's aus, Schönheit hin oder her, die Items wirst Du in irgendeiner Form beim Schließen der Mappe hard codieren müssen, entweder ins TabBlatt, oder als unsichtbare Namen, oder in ein zusätzl. verst. TabBlatt, oder...
Gruß, Mullit

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige