Неправильные цвета после копирования листа - PullRequest
0 голосов
/ 10 октября 2019

Я пишу макрос, который копирует определенный лист из основной рабочей книги во вновь созданную. Проблема, которая возникает, заключается в том, что форматирование неправильно отображается в новой рабочей таблице. Например: если A1 на первом листе (основная рабочая книга) имеет значение «без ошибок», а цвет шрифта установлен на зеленый, на листе вновь созданной рабочей книги цвет шрифта будет оранжевым. Это также происходит с некоторыми фонами ячеек, которые формируются вручную (не условно). Если ячейка A2 содержит «ошибку», а шрифт и цвет фона установлены на красный (на основе условного форматирования), формат корректно копируется в новую рабочую книгу. Перебор всех столбцов с неправильными цветами невозможен.

То, что я пробовал :

  • PasteSpecial (форматы),
  • setТема цвета новой рабочей книги к старой с vba (не получилось, чтобы это работало)

Выводы :

  • Только неправильная окраскапроисходит, когда лист копируется в новую рабочую книгу
  • Я прочитал, что эта ошибка может возникать из-за другого шаблона Color в новой рабочей книге, однако я не смог изменить тему
  • Форматирование происходит неправильно со строкой 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...