Excel 复制工作表后颜色错误

Excel 复制工作表后颜色错误,excel,vba,Excel,Vba,我正在编写一个宏,它会将主工作簿中的特定工作表复制到新创建的工作表中。出现的问题是,新工作表中的格式错误。例如:如果第一张工作表(主工作簿)中的A1值为“无错误”,且字体颜色设置为绿色,则新创建工作簿的工作表中的字体颜色为橙色。在某些单元格背景中也会发生这种情况,这些背景是手动格式化的(不是有条件的)。如果单元格A2包含“错误”,并且字体和背景颜色设置为红色(基于条件格式),则格式将正确复制到新工作簿中。 使用错误的颜色在所有列中循环不是一个选项 我所尝试的: 粘贴特殊(格式) 使用vba将新

我正在编写一个宏,它会将主工作簿中的特定工作表复制到新创建的工作表中。出现的问题是,新工作表中的格式错误。例如:如果第一张工作表(主工作簿)中的A1值为“无错误”,且字体颜色设置为绿色,则新创建工作簿的工作表中的字体颜色为橙色。在某些单元格背景中也会发生这种情况,这些背景是手动格式化的(不是有条件的)。如果单元格A2包含“错误”,并且字体和背景颜色设置为红色(基于条件格式),则格式将正确复制到新工作簿中。 使用错误的颜色在所有列中循环不是一个选项

我所尝试的

  • 粘贴特殊(格式)
  • 使用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分钟前写了一篇关于我是如何解决我的问题的文章,这是我昨天写的。但是谢谢你的建议。是的,我没有看到编辑。很高兴你解决了。