如何在 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
我有两个具有相同 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