从主工作簿复制整个工作表并粘贴到另一个工作簿中

我需要每天将整个电子表格从主工作簿复制到另一个工作簿(工作簿2)。 然后我需要重命名选项卡与工作簿2中的当前date。我不想打开工作簿2.我想要自动命中主工作簿上的macrosbutton来更新保存在其他位置的其他工作簿。

这是我试图录制的macros

Sub Graph() Cells.Select Selection.Copy ActiveWindow.ActivateNext Sheets.Add After:=Sheets(Sheets.Count) Sheets("Sheet2").Name = "04 08 2017" Cells.Select ActiveSheet.Paste ActiveWindow.ActivateNext End Sub 

正如@CLR已经提到的,你需要打开一个工作簿来粘贴一张工作表。

像下面这样的工作将会起作用,但是请注意,这仅仅是一个例子而不是一个完整的工作解决scheme。

你仍然至less需要实现一个适当的error handling…

  1. 捕捉错误,同时打开工作簿,它受到保护(因为已经由另一个用户打开)或错误的文件/path。
  2. 在重命名工作表时捕获错误,因为名称必须是唯一的。 重新使用现有名称将会引发错误。

如果发生错误,则不执行error handling可能会导致未确定的条件。


 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