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

我有一个工作的VBA脚本,完全复制我需要的格式除外。 我至less需要它来复制填充和文本颜色。

这是我目前的代码。

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. 用macros打开工作簿
  2. 用数据打开工作簿
  3. 复制数据
  4. 用数据closures工作簿
  5. 用macros将数据粘贴到工作簿中
  6. 用macros保存工作簿(现在也用数据)

与此问题是,如果您在步骤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