VBA编码复制粘贴
我想复制两个xls文件(Rahul.xls和Rohit.xls)中的数据,并将它们粘贴到主文件Macro.xls中 代码是复制粘贴Rahul.xls,但粘贴Rohit.xls时,它与数据重叠,导致Rahul.xls中的所有数据都消失了,我只能看到Rohit.xls中的数据 第二,它不是在复制粘贴后关闭源文件 有谁能帮我修改一下这个守则,这样 罗希特的数据将在拉胡尔的数据之后 复制粘贴Rahul的数据后,工作表将自动关闭VBA编码复制粘贴,vba,excel,Vba,Excel,我想复制两个xls文件(Rahul.xls和Rohit.xls)中的数据,并将它们粘贴到主文件Macro.xls中 代码是复制粘贴Rahul.xls,但粘贴Rohit.xls时,它与数据重叠,导致Rahul.xls中的所有数据都消失了,我只能看到Rohit.xls中的数据 第二,它不是在复制粘贴后关闭源文件 有谁能帮我修改一下这个守则,这样 罗希特的数据将在拉胡尔的数据之后 复制粘贴Rahul的数据后,工作表将自动关闭 Sub OpenCopyPaste() ' open the source
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
打开第二个文件后,代码将覆盖从A1开始的Sheet1范围内的数据。想办法找到范围的终点,并在那里开始新的数据
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
试试这样的。希望这是你需要的,但如果不是,我希望它至少能让你找到答案。干杯
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
您可以使用变量定义目标工作表中最后使用的行,并在所需范围内添加一行:
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
同时,在紧急情况下,您只能使用
昏暗的灯塔一样长
另一行呢
lLastRow=WorkbooksMacro.worksheetsheets1.CellsWorkbooksMacro.worksheetsheets1.Rows.Count,A.EndxlUp.Row
并且只添加修改第二个目标的变量,如下所示:
活页表1.A和lLastRow+1
在您的原始代码中Hi@USFBS。。。我认为有一些错误。。。因为我无法执行此代码。在子OpenCopyPaste上显示错误我的语法可能有问题。我编写了类似的代码,但在我的代码中,我总是将要打开的文件设置为变量,例如set b1=workbooks.open filename。另外,我错误地将.Save=True写成.Save=True。为了澄清,它应该是。保存一些调整应该会产生你想要的结果。它是Sub-OpenCopyPaste而不是Sub-OpenCopyPaste谢谢你帮助我的朋友们。但是,运行此代码时,调试位于emptyrow=WorksheetFunction.CountAsheetsSheets1.RangeA上。有人能帮忙吗。为什么?如果该行显示错误,那么您可能需要在工作表和范围之前定义工作簿名称,例如addingemptyrow=WorksheetFunction.CountAWorkbooks.Sheetssheet1.RangeAHi@Zegad,我尝试了此方法,但弹出的错误对象不支持此属性或方法。。。。任何关于这一切的想法都是未经测试的,但是如果你告诉我调试发送给你的是哪一行,我可以更正它。参见编辑