我有一个工作簿,其中包含四个工作表,每个工作表都包含数据。我需要打开另一个工作簿并从那里复制到每个原始文件工作表中。
数据设置为表格,因此我需要保留第一行标题。
这就是我现在正在使用的内容(见下文),但我读到有更好的方法可以用这样的东西来做。
工作簿(“File1.xls”)。表格(“Sheet1”)。范围(“A1”)。复制工作簿(“File2.xls”)。表格(“Sheet2”)。范围(“A1”)< / p>
我遇到的问题是我不知道如何复制除第一行以外的所有内容。使用我正在使用的代码,我记录了一个转到单元格A2的宏,并使用CMD + SHF + END来获取所有数据。
提前感谢您提供的任何帮助。
Sub UpdateData()
'
' UpdateData Macro
Application.ScreenUpdating = False
' Clear current data.
Sheets("ClientInfo").Select
Rows("2:" & Rows.Count).ClearContents
Sheets("Quotes").Select
Rows("2:" & Rows.Count).ClearContents
Sheets("PolicyPlanData").Select
Rows("2:" & Rows.Count).ClearContents
Sheets("EstimatedPremium").Select
Rows("2:" & Rows.Count).ClearContents
'Open Data file.
Workbooks.Open Filename:= _
"W:\My File Cabinet\cndjrdn\BGA\ClientBio\ClientData.xls"
'Copy data into each worksheet.
Application.CutCopyMode = False
Windows("ClientData.xls").Activate
Application.GoTo Sheets("ClientInfo").Range("A2")
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Windows("BGA Client Bio May2016v4.xlsx.xlsm").Activate
Application.GoTo Sheets("ClientInfo").Range("A2")
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A2").Select
Windows("ClientData.xls").Activate
Application.GoTo Sheets("Quotes").Range("A2")
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Windows("BGA Client Bio May2016v4.xlsx.xlsm").Activate
Application.GoTo Sheets("Quotes").Range("A2")
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A2").Select
Windows("ClientData.xls").Activate
Application.GoTo Sheets("PolicyPlanData").Range("A2")
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Windows("BGA Client Bio May2016v4.xlsx.xlsm").Activate
Application.GoTo Sheets("PolicyPlanData").Range("A2")
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A2").Select
Windows("ClientData.xls").Activate
Application.GoTo Sheets("EstimatedPremium").Range("A2")
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Windows("BGA Client Bio May2016v4.xlsx.xlsm").Activate
Application.GoTo Sheets("EstimatedPremium").Range("A2")
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A2").Select
'Refresh PivotTable(s)
ThisWorkbook.RefreshAll
'Close Data File
Windows("ClientData.xls").Activate
ActiveWorkbook.Close SaveChanges:=False
End Sub
答案 0 :(得分:0)
尝试为要复制的表使用命名范围。如果表更改宽度或长度,则动态命名范围允许范围自动调整大小。将命名范围拖放到Excel数组中,然后将数组拖放到新位置。它比复制和粘贴要快得多,它使您可以进行所有复制而无需在工作表之间来回切换。与使用电子表格的单元格进行操作相比,在数组中处理数据和进行计算要快得多。
正如另一位顾问所言,摆脱工作表和范围的.selects。要清除范围,只需使用类似的内容:
Range("A1:Y240").ClearContents
或者使用从A1开始的宽度和高度未知的表格来执行此操作:
Sheets("ClientInfo").Range("A1").Resize(Cells(Rows.Count, "A").End(xlUp).Row, Cells(1, columns.Count).End(xlToLeft).Column).ClearContents
唯一的要求是,列A和行1从头到尾都没有空格。