尝试将所有单元格中的格式从一个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>
直接的问题在于执行的顺序。 目前你是:
- 用macros打开工作簿
- 用数据打开工作簿
- 复制数据
- 用数据closures工作簿
- 用macros将数据粘贴到工作簿中
- 用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