【发布时间】:2017-02-26 16:40:12
【问题描述】:
我有一个工作簿,其中有四个工作表,每个工作表都有数据。我需要打开另一个工作簿并从那里复制到每个原始文件工作表中。
数据设置为表格,因此我需要保留第一行标题。
这是我现在正在使用的(见下文),但我读到有更好的方法来使用类似的东西。
Workbooks("File1.xls").Sheets("Sheet1").range("A1").Copy Workbooks("File2.xls").Sheets("Sheet2").range("A1")
我的问题是我不知道如何复制除第一行之外的所有内容。使用我当前使用的代码,我录制了一个宏,该宏进入单元格 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
【问题讨论】:
-
你可以通过avoiding the use of
.Select删除很多这些行 -
试试 sourcerange.copy Destination := Destinationsheet.range ("A2")
-
好的。我看看我能不能弄明白。我只是不知道如何使源范围从第 2 行开始到数据的末尾。谢谢。
标签: excel copy-paste vba