none
Custom Colors in Excel 2010 (XML/VBA) RRS feed

  • Allgemeine Diskussion

  • Hi,

    ich möchte für Powerpoint, Word und Excel 2010 ein benutzerdefiniertes Theme mit eigenen Designfarben und Custom Colors erstellen. Die Custom Colors habe ich in der theme1.xml jeweils unten angefügt, z.b.

     

    <a:extraClrSchemeLst/>
     <a:custClrLst>
       <a:custClr name="Custom Color 1">
       <a:srgbClr val="92D050"/>
       </a:custClr>
       <a:custClr name="Custom Color 2">
       <a:srgbClr val="FF0000"/>
       </a:custClr>
       <a:custClr name="Custom Color 3">
        <a:srgbClr val="00B050"/>
        </a:custClr>
     </a:custClrLst>
    

     


    In Word und Powerpoint funktioniert die Übernahme, aber in Excel werden nur die Designfarben übernommen, die Custom Colors jedoch nicht.

    Die Übernahme erfolgt in Word mit

    ActiveDocument.ApplyDocumentTheme ("C:\Verzeichnis\theme.thmx")
    in Powerpoint mit
    ActiveWindow.Selection.SlideRange(1).Design.SlideMaster.ApplyTheme ("C:\Verzeichnis\theme.thmx")
    und in Excel mit
    ActiveWorkbook.ApplyTheme ("C:\Verzeichnis\theme.thmx")

    Weiß jemand warum und wie man das löst?

     

     

    Danke!

    schwaig-st







    Mittwoch, 19. Oktober 2011 13:35

Alle Antworten

  • keine Ideen?
    Donnerstag, 20. Oktober 2011 13:01
  • Hallo schwaig-st,

    Ich konnte reproduzieren was Du sagst und ich habe es nur in PowerPoint 2010 gemacht und ich konnte nur dort die Custom Colors sehen. In Excel 2010 sehe ich diese Custom Colors nicht.

     

    Artikel die ich verwendet habe:

    Office 2007 – Adding Custom Colors to Color Picker

    Add Custom Color to Office 2010 Themes.

    Grüße,

    Robert

    Donnerstag, 20. Oktober 2011 17:52
    Moderator
  • Hallo schwaig-st,

    Dieses Problem ist soweit bekannt als Bug in Excel 2007 und 2010. Inwieweit ich weiß, wurde dieser Bug nicht gefixt. Es gibt aber einen Workaround:

    Nachdem Du das Thema (programmatisch oder manuell) gesetzt hast, brauchst Du

    1. Ein Rechteck einfügen (Einfügen -> Formen -> Rechteck) – nicht unbedingt ein Rechteck sondern irgendein Shape-Objekt
    2. Das Shape markieren
    3. Schriftfarbe jetzt auswählen (Start -> Schriftart -> Schriftfarbe)
    4. Dann Füllfarbe auswählen (Start -> Schriftart -> Füllfarbe)
    5. Jetzt das Shape-Objekt löschen

    Die Einstellungen bleiben erhalten, bis Excel zu gemacht wird.

    Grüße,

    Bogdan


    Ich bin gerne bei den Foren. Es kommt von Herzen. Es wird aber keine implizite oder sonstige Garantie für die geposteten Antworte / Informationen gewährt. Hier auch die Forenregeln.
    Freitag, 21. Oktober 2011 13:25
  • Hallo Bogdan,

    danke für die Erklärung. Dein Workaround funktioniert zwar, ist aber etwas umständlich. Und wenn ich das ganze (Shape) per VBA ausführen lasse, dann funktioniert es nicht. :/

     

    Grüße

    schwaig-st

     

    Freitag, 21. Oktober 2011 14:18
  • Hallo schwaig-st,
    Ich habe es geschafft, die Workaround-Schritte programmatisch durchzuführen. Voraussetzung ist halt, die beide Befehle Schriftfarbe und Füllfarbe in dem QAT (Quick Access Toolbar) zu bringen. So kann man diese Befehle mit Key Tips ausführen: [ALT] + [4] und [ALT] + [5].
     
    Und dann mit SendKeys könnte man die Workaround-Schritte ausführen. Code in Modul1:
    Dim sh As Shape
    
    Sub Workaround()
        Set sh = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, 0, 10, 10)
        sh.Select
        Application.OnTime Now + TimeValue("00:00:01"), "DoAction1"
    End Sub
    
    Public Sub DoAction1()
        sh.Select
        SendKeys "%4{ESC}{ESC}"
        Application.OnTime Now + TimeValue("00:00:01"), "DoAction2"
    End Sub
    
    Public Sub DoAction2()
        sh.Delete
        Set sh = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, 0, 10, 10)
        sh.Select
        Application.OnTime Now + TimeValue("00:00:01"), "DoAction3"
    End Sub
    
    Public Sub DoAction3()
        sh.Select
        SendKeys "%5{ESC}{ESC}"
        Application.OnTime Now + TimeValue("00:00:01"), "DoAction4"
    End Sub
    
    Public Sub DoAction4()
        sh.Delete
        ActiveWorkbook.Saved = True
    End Sub
    

     
    Umstaendlich auch… K
    Viele Grüße,
    Bogdan

    Ich bin gerne bei den Foren. Es kommt von Herzen. Es wird aber keine implizite oder sonstige Garantie für die geposteten Antworte / Informationen gewährt. Hier auch die Forenregeln.
    Montag, 24. Oktober 2011 12:43
  • Dieser Thread wurde in Diskussion umgewandelt. Natürlich sind weitere Nachfragen / Beiträge möglich und selbstverständlich willkommen.

    Bogdan


    Ich bin gerne bei den Foren. Es kommt von Herzen. Es wird aber keine implizite oder sonstige Garantie für die geposteten Antworte / Informationen gewährt. Hier auch die Forenregeln.
    Mittwoch, 26. Oktober 2011 09:03