尝试将所有单元格中的格式从一个 Excell sheet 复制到另一个使用 VBA 特别保持填充和文本颜色

Trying to copy Formatting in all cells from one Excell sheet into another specifically keeping fill and text color using VBA

我有一个可以正常工作的 VBA 脚本,它可以准确复制我需要的内容(格式除外)。我至少需要它来复制填充和文本颜色。

这是我当前的代码。

Private Sub Workbook_Open()
Application.DisplayAlerts = False
Cells.Select
Range("A1").Activate
Selection.ClearContents
Selection.UnMerge
Selection.ClearContents
Range("A1").Select
Workbooks.Open Filename:= _
    "Photo\Studio\DAILY_REPORT_BACKUPS\DIGI_Review_Terry.xlsm"
Range("A1:XFD70").Select
Range("A1:XFD70").Activate
Selection.Copy
ActiveWindow.Close
Range("A1").Select
Sheets("Terry").Paste
ActiveWorkbook.Save

End Sub>

直接问题出在执行顺序上。目前您是:

  1. 用宏打开工作簿
  2. 打开包含数据的工作簿
  3. 正在复制数据
  4. 关闭包含数据的工作簿
  5. 正在使用宏将数据粘贴到工作簿中
  6. 使用宏保存工作簿(现在也使用数据)

问题在于,如果您在第 5 步之前执行第 4 步,格式会丢失,剪贴板上只会保留文本。那么这意味着我们必须在执行过程中切换步骤4和5。

此外,我们应该摆脱那些 select 语句并直接使用范围。这是最佳实践,在代码中更容易理解。

以下是按照我们希望它们执行的顺序标记步骤的代码:

Private Sub Workbook_Open() 'step 1
Dim wb As Workbook
Dim wb2 As Workbook
Set wb = ActiveWorkbook

Application.DisplayAlerts = False
Cells.ClearContents
Cells.UnMerge
Cells.ClearContents

'step 2
Workbooks.Open Filename:= _
    "Photo\Studio\DAILY_REPORT_BACKUPS\DIGI_Review_Terry.xlsm"
Set wb2 = ActiveWorkbook

'step 3
wb2.ActiveSheet.Range("A1:XFD70").Copy

'step 5 (switch with 4)
wb.Sheets("Terry").Range("A1").PasteSpecial Paste:=xlPasteAll

'step 4 (switch with 5)
wb2.Close

'step 6
wb.Save
End Sub

这里是没有疯狂步骤注释的相同代码:

Private Sub Workbook_Open()
Dim wb As Workbook
Dim wb2 As Workbook
Set wb = ActiveWorkbook

Application.DisplayAlerts = False
Cells.ClearContents
Cells.UnMerge
Cells.ClearContents

Workbooks.Open Filename:= _
    "Photo\Studio\DAILY_REPORT_BACKUPS\DIGI_Review_Terry.xlsm"
Set wb2 = ActiveWorkbook

wb2.ActiveSheet.Range("A1:XFD70").Copy
wb.Sheets("Terry").Range("A1").PasteSpecial Paste:=xlPasteAll
wb2.Close
wb.Save

End Sub