Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: workbook.worksheet.copy ändert Farben, Wieso?

workbook.worksheet.copy ändert Farben, Wieso?
07.08.2018 09:15:06
Dexter701
Hallo,
ich möchte ein Tabellenblatt in einer seperaten Datei ausgeben.
Dazu verwende ich die folgende Methode, welche auch grundsätzlich funktioniert, mein Problem ist nur das die Zellefarben geändert werden.
Kann mir jemand sagen wo dran das liegt? bzw. wie ich es fixen kann?
Bin über jeden Ratschlag und Tip dankbar!
https://msdn.microsoft.com/de-de/vba/excel-vba/articles/worksheet-copy-method-excel
Gruß Dex
Anzeige

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

Betreff
Datum
Anwender
Anzeige
Tabelle1.SaveAs Filename:="Test.xls"
07.08.2018 09:24:58
Matthias
Hallo
Pfad und Blattname bitte anpassen.
Die Farben bleiben bei mir.
Gruß Matthias
AW: Tabelle1.SaveAs Filename:="Test.xls"
07.08.2018 10:03:12
Dexter701
Hey,
also im Detail sieht das so und funktioniert auch! Nur wird bei dem neuen wb das Farbshema geändert und dadurch meine Farben :/
wbaktuell.Worksheets("XXX").Copy
With ActiveWorkbook
.SaveAs Filename:=publishpath & "\HP_" & Datumvar & "_" & kstvar & ".xlsx", FileFormat:=xlOpenXMLStrictWorkbook
.Close
End With
Anzeige
AW: Tabelle1.SaveAs Filename:="Test.xls"
07.08.2018 10:14:47
Daniel
HI
mal ne frage: was ist denn ein xlOpenXMLStrictWorkbook? normalerweise speichert man doch als xlOpenXMLWorkbook.
oder probier mal folgenden Workaround:
1. speichere die gesamte Datei mit SaveCopyAs
2. öffne diese Datei und lösche alle Sheets außer dem gewünschten.
Bleibt dann die Farbe erhalten?
kleiner Tip am Rande: bei SaveAs sollte man die Dateierweiterung im Dateinamen nicht mit angeben.
diese wird vom System automatisch und passend zum gewählten Dateityp hinzugefügt.
Gruß Daniel
Anzeige
AW: Tabelle1.SaveAs Filename:="Test.xls"
07.08.2018 10:37:04
Dexter701
gut beobachtet..hab den Wert aus der Tabelle und nur nach der Dateiendung gesucht.
ich dachte das die Farbänderung vllt damit behoben wird, war aber nicht der Fall.
Ich werd aber auf dein Weg zurück greifen :/
https://msdn.microsoft.com/de-de/vba/excel-vba/articles/xlfileformat-enumeration-excel
Danke für Hilfe!
Anzeige
AW: Tabelle1.SaveAs Filename:="Test.xls"
07.08.2018 10:47:59
Daniel
Hi
nein, das mit der Dateiendung ist nicht wirklich relevant und hat mit dem Problem auch nichts zu tun.
wenn du die richtige im Dateinamen hast, ist sowieso alles gut.
solltest du die falsche angeben, wird Excel beim Speichern die richtige anhängen und dann entsteht sowas wie: "Dein Dateiname.xlsx.xlsm"
Gruß Daniel
Anzeige
.Dateinendung Offtopic
07.08.2018 11:08:52
Dexter701
also hab es mal weggelassen.. die Dateiendung wurde nicht automatisch angefügt
arbeite mit Office 2016 365
AW: .Dateinendung Offtopic
07.08.2018 11:16:05
Daniel
HI
ich hab hier Office 2013 und da wird die Dateiendung automatisch vergeben, wenn sie nicht vorhanden ist.
Wenn ich sie dran lasse und sie falsch ist, bekomme ich eine Fehlermeldung.
Gruß Daniel
Anzeige
AW: .Dateinendung Offtopic
07.08.2018 11:20:31
Dexter701
ich kann mich erinnern das auch schon gehabt zu haben..
aber wie du sagst, solang sie stimmt wird da auch nix verrutschen
Gruß
AW: Tabelle1.SaveAs Filename:="Test.xls"
07.08.2018 11:09:35
Daniel
Hi
dann müsstest du das Farbschema mit kopieren.
(daher auch der Workaround, zunächst das ganze Workbook zu übernehmen und dann die nicht benötigten Blätter zu löschen, dann wird ggf das Farbschema mit kopiert)
oder probier mal einen anderen Workaround:
färbe die Zellen nicht mit den Farbschema-Farben, sondern über die direktvergabe des Farbwertes (im Untermenü: weitere Farben)
dann müssten die Farben unabhängig vom Farbschema sein und beim kopieren des Blattes erhalten bleiben.
Gruß Daniel
Anzeige
AW: Tabelle1.SaveAs Filename:="Test.xls"
07.08.2018 11:15:42
Dexter701
eigentlich habe ich die Farben direkt zugewissen.. ich verstehe nicht was da verrutscht
zum Glück gibt es ja immer viele Lösungen ;)
hab dein Vorschlag aber bereits umgsetzt und läuft!
Danke dir!
;
Anzeige
Anzeige

Infobox / Tutorial

Farben beim Kopieren von Arbeitsblättern in Excel VBA


Schritt-für-Schritt-Anleitung

Um ein Arbeitsblatt in eine separate Datei zu kopieren und dabei Farbänderungen zu vermeiden, kannst du die folgende Methode verwenden. Beachte, dass die Verwendung von xlOpenXMLStrictWorkbook in verschiedenen Excel-Versionen zu unterschiedlichen Ergebnissen führen kann. Hier ein Beispiel:

Sub CopyWorksheet()
    Dim wbAktuell As Workbook
    Dim publishPath As String
    Dim Datumvar As String
    Dim kstvar As String

    ' Setze deinen Pfad und Variablen hier
    publishPath = "C:\Dein\Pfad"
    Datumvar = Format(Date, "yyyy-mm-dd")
    kstvar = "DeinKst"

    Set wbAktuell = ThisWorkbook
    wbAktuell.Worksheets("XXX").Copy

    With ActiveWorkbook
        .SaveAs Filename:=publishPath & "\HP_" & Datumvar & "_" & kstvar & ".xlsx", FileFormat:=xlOpenXMLStrictWorkbook
        .Close
    End With
End Sub

Häufige Fehler und Lösungen

  • Problem: Excel ändert die Farben beim Kopieren des Arbeitsblattes.

    • Lösung: Stelle sicher, dass du die Farben direkt zuweist und nicht die Farbschema-Farben verwendest. Du kannst die Farben über das Menü "Weitere Farben" direkt angeben.
  • Problem: Dateiendung wird nicht automatisch hinzugefügt.

    • Lösung: Lasse die Dateiendung im Dateinamen weg, da Excel sie automatisch hinzufügt, wenn sie nicht vorhanden ist.

Alternative Methoden

Wenn die Standardmethode worksheet.copy Probleme mit den Farben verursacht, kannst du folgende Alternativen ausprobieren:

  1. SaveCopyAs-Methode: Speichere die gesamte Arbeitsmappe mit SaveCopyAs, öffne die Kopie und lösche nicht benötigte Blätter. Dies kann das Farbschema beibehalten.

    wbAktuell.SaveCopyAs publishPath & "\Kopie.xlsx"
  2. Manuelles Kopieren von Zellen: Anstatt das gesamte Arbeitsblatt zu kopieren, kannst du die Zellen manuell in ein neues Arbeitsblatt einfügen. Dies gibt dir mehr Kontrolle über die Formatierungen.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die oben genannten Methoden anpassen kannst:

  • Farben manuell zuweisen:
Range("A1").Interior.Color = RGB(255, 0, 0) ' Rote Farbe
  • Alle Zellen kopieren:
Worksheets("XXX").Cells.Copy Destination:=Worksheets("NeuesBlatt").Cells

Tipps für Profis

  • Nutze die Workbook- und Worksheet-Objekte effizient, um Fehler zu minimieren, die durch falsche Referenzen entstehen können.
  • Überprüfe die Excel-Version, da einige Funktionen in älteren Versionen nicht verfügbar sind.
  • Experimentiere mit verschiedenen Formatierungsoptionen, um herauszufinden, welche beim Kopieren am besten erhalten bleiben.

FAQ: Häufige Fragen

1. Warum ändern sich die Farben beim Kopieren von Arbeitsblättern? Das Farbschema der neuen Arbeitsmappe kann unterschiedlich sein, was zu einer Änderung der Farben führt. Achte darauf, die Farben direkt zuzuweisen.

2. Was ist der Unterschied zwischen xlOpenXMLStrictWorkbook und xlOpenXMLWorkbook? xlOpenXMLStrictWorkbook speichert die Datei strenger im OpenXML-Format und kann die Kompatibilität zu älteren Excel-Versionen beeinflussen. Verwende xlOpenXMLWorkbook, wenn du auf Kompatibilität Wert legst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige