我想从两个xls文件中复制数据,Rahul.xls和Rohit.xls并将它们粘贴到主文件中" Macro.xls"
代码是复制粘贴Rahul.xls但是当粘贴Rohit.xls时它会重叠数据,导致Rahul.xls的所有数据都消失了,我只能看到来自Rohit.xls的数据。
其次,它是在复制粘贴后没有关闭源文件。
任何人都可以帮我修改此代码,以便
复制粘贴Rahul的数据后,工作表将自动关闭
Sub OpenCopyPaste()
' open the source workbook and select the source sheet
Workbooks.Open Filename:="C:\Rahul.xls"
Sheets("Case Tracker").Select
' copy the source range
Sheets("Case Tracker").Range("A:J").Select
Selection.Copy
' select current workbook and paste the values starting at A1
Windows("Macro.xls").Activate
Sheets("Sheet1").Select
Sheets("Sheet1").Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.Save
Workbooks.Open Filename:="C:\Rohit.xls"
Sheets("Case Tracker").Select
' copy the source range
Sheets("Case Tracker").Range("A:J").Select
Selection.Copy
' select current workbook and paste the values starting at A1
Windows("Macro.xls").Activate
Sheets("Sheet1").Select
Sheets("Sheet1").Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.Save
End Sub
答案 0 :(得分:0)
代码在打开第二个文件后覆盖Sheet1范围内从A1开始的数据。想一想找到范围结束并在那里开始新数据的方法。
Workbooks.Open Filename:="C:\Rohit.xls"
Sheets("Case Tracker").Select
' copy the source range
Sheets("Case Tracker").Range("A:J").Select
Selection.Copy
' select current workbook and paste the values starting at A1
Windows("Macro.xls").Activate
Sheets("Sheet1").Select
' the code is overwriting the data in Sheet1 range starting at A1
Sheets("Sheet1").Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.Save
关闭工作簿,我相信它就像:
Workbooks(fileName).Close
答案 1 :(得分:0)
尝试这样的事情。希望它是你所需要的,但如果不是,我希望它至少可以让你走上答案的道路。干杯。
Workbooks.Open Filename:="C:\Rahul.xls"
Sheets("Case Tracker").Select
' copy the source range
Sheets("Case Tracker").Range("A:J").Select
Selection.Copy
' select current workbook and paste the values starting at A1
Windows("Macro.xls").Activate
Sheets("Sheet1").Select
Sheets("Sheet1").Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.Save
workbooks("Rahul.xls").close workbooks("Rahul.xls").saved=true
Workbooks.Open Filename:="C:\Rohit.xls"
Sheets("Case Tracker").Select
' copy the source range
Sheets("Case Tracker").Range("A:J").Select
Selection.Copy
' select current workbook and paste the values starting at A1
Windows("Macro.xls").Activate
Sheets("Sheet1").Select
'Sheets("Sheet1").Range("A1").Select-take this bit and replace it with the following
emptyrow=worksheetfunction.counta(sheets("sheet1").range("A")) 'you can use any column to reference, one with continuous data is the best
sheets("Sheet1").cells(emptyrow,1).select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.Save
workbooks("Rohit.xls").close workbooks("Rohit.xls").saved=true
End Sub
答案 2 :(得分:0)
你可以使用一个变量来定义目标表中最后一个使用过的行,并在欲望范围内添加一个加一个:
Sub CopySheets()
Workbooks.Open Filename:="C:\Rahul.xls"
'Variable to the last available row
Dim lLastRow As Long
Sheets("Case Tracker").Range("A:J").Copy Destination:=Windows("Macro.xls").Sheets("Sheet1").Range("A1")
Application.CutCopyMode = False
Workbooks.Open Filename:="C:\Rohit.xls"
'Retrieve the last used row in the destination
lLastRow = Workbooks("Macro").Worksheets("Sheet1").Cells(Workbooks("Macro").Worksheets("Sheet1").Rows.Count, "A").End(xlUp).Row
'Use the Lastrow variable aded to the range of the destination + 1 (the next empty row)
Sheets("Case Tracker").Range("A:J").Copy Destination:=Windows("Macro.xls").Sheets("Sheet1").Range("A" & lLastRow + 1)
Application.CutCopyMode = False
Workbooks("Macro").Save
Workbooks("Macro").Close
End Sub
与此紧迫,你只能使用
Dim lLastRow As Long
和另一行
lLastRow = Workbooks("Macro").Worksheets("Sheet1").Cells(Workbooks("Macro").Worksheets("Sheet1").Rows.Count, "A").End(xlUp).Row
并且只添加修改第二个目标的变量,如下所示:
Sheets("Sheet1").Range("A" & lLastRow + 1)