在新工作簿中复制 Excel 主题颜色

Posted

技术标签:

【中文标题】在新工作簿中复制 Excel 主题颜色【英文标题】:Copy Excel theme color in a new workbook 【发布时间】:2016-05-20 08:32:37 【问题描述】:

我想制作一个在新工作簿中复制两张工作表的宏。 但是新创建的工作簿中的主题颜色不同。

Sub Export_File()
Dim Wb3 As Workbook
Dim strSaveName As String

strSaveName = Worksheets("Communication").Range("a2").Value
Set Wb3 = ThisWorkbook
 
'copy sheets to new workbook
Sheets(Array("Auswertung", "Communication")).Copy
ActiveWorkbook.SaveAs strSaveName

Workbooks(Wb3).Colors = Workbooks(strSaveName).Colors

End Sub

这条线对我不起作用:

Workbooks(Wb4).Colors = Workbooks(strSaveName).Colors

我认为这与 Set Wb4 = ThisWorkbook 需要帮助...

问候

【问题讨论】:

【参考方案1】:

这似乎对我有用,可以复制工作簿主题:

    '   copy the colors and themes
    '
    resultWorkbook.Colors = sourceWorkbook.Colors
    'Theme is not the same as colors
    Dim sourceTheme As Microsoft.Office.Core.ThemeColorScheme = sourceWorkbook.Theme.ThemeColorScheme 
    Dim resultTheme As Microsoft.Office.Core.ThemeColorScheme = resultWorkbook.Theme.ThemeColorScheme 

    For i = 1 To sourceTheme.Count  ' there are 12 theme colors: https://msdn.microsoft.com/en-us/library/aa432704(v=office.12).aspx
        'Debug.WriteLine(String.Format("0, -2 ~ 1", i, sourceTheme.Colors(i).RGB))
        resultTheme.Colors(i).RGB = sourceTheme.Colors(i).RGB
    Next i

【讨论】:

【参考方案2】:

Worksheet.Copy 只接受值,但如果您将脚本设置为将单元格范围从一张纸复制到另一张纸,您可以使用PasteSpecial 复制值和格式 - 例如来自this post

Worksheets(1).Cells(i, 3).Copy
Worksheets(2).Cells(a, 15).PasteSpecial Paste:=xlPasteFormats
Worksheets(2).Cells(a, 15).PasteSpecial Paste:=xlPasteValues

【讨论】:

感谢您的回复。但这不会复制工作簿的调色板/主题颜色。这段代码和我的效果一样。【参考方案3】:

转移主题的另一种方法是将源主题保存为临时 xml,然后将该文件加载到目标主题中。

DestWB.Colors = SourceWB.Colors
Dim TempThemeFile As String
Dim sourceTheme As Microsoft.Office.Core.ThemeColorScheme
set sourceTheme = sourceWorkbook.Theme.ThemeColorScheme 

'Late binding alternative:
'Dim sourceTheme As Object
'Set sourceTheme = SourceWB.Theme.ThemeColorScheme

TempThemeFile = Environ$("temp") & "\xltheme" & Format(Now, "dd-mm-yy h-mm-ss") & ".xml"
sourceTheme.Save TempThemeFile
DestWB.Theme.ThemeColorScheme.Load TempThemeFile
Kill TempThemeFile

【讨论】:

以上是关于在新工作簿中复制 Excel 主题颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何用VBA把一个工作簿中的工作表内容复制到另一个汇总工作簿里面的指定的工作表里面去?

使用 ADO 在 Excel 工作簿中读取和写入数据时未复制最后一个 Header 单元格?

复制源文件时管理 Excel 源工作簿中的链接

一个Excel工作簿中的多个工作表怎么拆分成独立表格

Excel VBA 宏将复制一系列单元格并粘贴到另一个工作簿中

如何将一个 Excel 工作簿中的多个工作表合并成一个工作表?