正如@CLR已经提到的,你需要打开一个工作簿片粘贴到其中。
类似下面的内容可以工作,但请注意,这只是一个示例,并不是一个完整的工作解决方案。
您仍然至少需要实现一个适当的错误处理...
- 捕获错误,同时打开工作簿,它是受保护的(因为另一个用户已打开)或错误的文件/路径。
- 在重命名工作表时捕获错误,因为名称必须是唯一的。重新使用现有名称将会引发错误。
如果发生错误,不执行错误处理可能会导致未确定的条件。
Option Explicit 'first line in your module forces correct variable declare.
Public Sub Graph()
Application.ScreenUpdating = False 'Disable screenupdating
'Open destination workbook
Dim DestWorkbook As Workbook
Set DestWorkbook = Workbooks.Open(Filename:="C:\YourPathHere\Workbook2.xlsx")
With DestWorkbook
'Copy ActiveSheet
ThisWorkbook.ActiveSheet.Copy After:=.Sheets(.Sheets.Count)
'Instead of copying the ActiveSheet I recommend to copy a specific sheet by name
'ThisWorkbook.Worksheets("YourSourceSheetName").Copy After:=.Sheets(.Sheets.Count)
'Rename last sheet (the one we inserted above)
.Sheets(.Sheets.Count).Name = "04 08 2017"
'Close and save workbook2
.Close SaveChanges:=True
End With
Application.ScreenUpdating = True 'Enable screenupdating
End Sub
你** **将需要以添加一些内容,打开工作簿2。您可能会考虑以不可见的方式打开它,添加页面然后关闭它,但不得不打开它。 – CLR
而不是剪切和粘贴,您可以使用worksheet.copy复制整个工作表。无论如何,正如CLR所说,无论如何您都必须打开目标工作簿(或创建一个新工作簿)。 – FunThomas
另外,您可以在工作表级别进行复制,而不是在单元/范围级别更高效。在以下位置录制一个宏:打开工作簿2,然后将工作表1从工作簿1移动/复制到工作簿2,重命名该选项卡,然后关闭并保存工作簿2.这将为您提供所需的大纲代码,然后您可以将行添加到关闭/屏幕更新等。 – CLR