如何在 Excel VBA 中将所有单元格颜色从一个工作簿复制到另一个工作簿?

How to copy all cell colors from one workbook to another in Excel VBA?

我有两个具有相同 sheet 名称和相似数据的大型工作簿。源 sheet 有一堆颜色应用于单元格,我必须将这些颜色复制到目标 sheet.

中它们各自的单元格

我试过这个建议: How to copy an Excel color scheme from one workbook to another

但它似乎没有做任何事情。

这是我写的代码,但是锁了很久excel。你觉得合适吗?

Sub CopyColors()

Dim x As Workbook
Dim y As Workbook
Dim SomeSheet As Worksheet
Dim SomeRange As Range

Set x = Workbooks.Open(" c:/PATH/Source.xlsm ")
Set y = Workbooks.Open(" c:/PATH/Destination.xlsm ")

y.Colors = x.Colors

For Each SomeSheet In x.Worksheets
    For Each SomeRange In SomeSheet.Cells
        y.Sheets(SomeSheet.Name).Range(SomeRange.Address).Interior.ColorIndex = SomeRange.Interior.ColorIndex
    Next SomeRange
Next SomeSheet

End Sub

我决定最好利用我的时间来探索其他选择,而不是等待它成功。如果我没有更好的主意,我会让这个 运行 今晚过夜。

您可以根据 sheet 不同工作簿中的内容进行调整。假设我们在 相同的 工作簿中有两个 sheet。我们要复制颜色。我们不是单独循环所有单元格,而是将第一个 sheet 和 PasteSpecialFormats 中的所有单元格复制到第二个作品 sheet:

来自录音机:

Sub Macro2()
    Sheets("Sheet1").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Sheet2").Select
    Cells.Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
End Sub