Excel 复制工作表后颜色错误
我正在编写一个宏,它会将主工作簿中的特定工作表复制到新创建的工作表中。出现的问题是,新工作表中的格式错误。例如:如果第一张工作表(主工作簿)中的A1值为“无错误”,且字体颜色设置为绿色,则新创建工作簿的工作表中的字体颜色为橙色。在某些单元格背景中也会发生这种情况,这些背景是手动格式化的(不是有条件的)。如果单元格A2包含“错误”,并且字体和背景颜色设置为红色(基于条件格式),则格式将正确复制到新工作簿中。 使用错误的颜色在所有列中循环不是一个选项 我所尝试的:Excel 复制工作表后颜色错误,excel,vba,Excel,Vba,我正在编写一个宏,它会将主工作簿中的特定工作表复制到新创建的工作表中。出现的问题是,新工作表中的格式错误。例如:如果第一张工作表(主工作簿)中的A1值为“无错误”,且字体颜色设置为绿色,则新创建工作簿的工作表中的字体颜色为橙色。在某些单元格背景中也会发生这种情况,这些背景是手动格式化的(不是有条件的)。如果单元格A2包含“错误”,并且字体和背景颜色设置为红色(基于条件格式),则格式将正确复制到新工作簿中。 使用错误的颜色在所有列中循环不是一个选项 我所尝试的: 粘贴特殊(格式) 使用vba将新
- 粘贴特殊(格式)
- 使用vba将新工作簿的颜色主题设置为旧工作簿(无法使用)
- 只有将工作表复制到新工作簿时,才会出现错误的颜色
- 我已经了解到,由于新工作簿中的颜色模板不同,可能会发生此错误,但是我无法更改主题
- 行
的格式错误,因此基于其他子项的格式依赖关系不会导致错误的颜色ws.Copy After:=wbFile.Worksheets(1)
Public Sub saveKonsoData()
Dim strDir As String
Dim wbFile As Workbook
Dim File As String
Dim ws As Worksheet
On Error GoTo fehler
Application.ScreenUpdating = False
strDir = ThisWorkbook.Path & "\XYZ"
If Dir(strDir, vbDirectory) = "" Then
MkDir strDir
End If
Set wbFile = Workbooks.Add
Set ws = ThisWorkbook.Worksheets(konsoName) 'konsoName is a string Constant
ws.Copy After:=wbFile.Worksheets(1)
File = ThisWorkbook.Path & "\XYZ\" & Format(Now, "YYYY.MM.dd hh.mm") & "_" & "NEWWORKBOOK" & ".xlsx"
Application.DisplayAlerts = False
wbFile.SaveAs File
wbFile.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Die Speicherung war erfolgreich.", vbInformation + vbOKOnly
Exit Sub
fehler:
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Die Speicherung der konsolidierten Datei war nicht erfolgreich. Bitte speichern Sie die Datei manuell.", vbInformation + vbOKOnly
End Sub
编辑:
我无意中发现了使用xlPasteAllUsingSourceTheme的可能性。我复制了单元格而不是表,并使用了上述常量。这就解决了问题。下面可以看到更改后的代码截取
Set ws = ThisWorkbook.Worksheets(konsoName)
'ws.Copy After:=wbFile.Worksheets(1)
''TEST STARTS
ws.Cells.Copy
wbFile.Worksheets(1).Cells.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
''TEST ENDs
我在8分钟前写了一篇关于我如何解决我的问题的文章,这是我昨天写的。但是谢谢你的建议。是的,我没有看到编辑。很高兴你解决了这个问题。我在8分钟前写了一篇关于我是如何解决我的问题的文章,这是我昨天写的。但是谢谢你的建议。是的,我没有看到编辑。很高兴你解决了。