在新工作簿中复制 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 单元格?