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

时间:2017-09-15 08:10:04

标签: excel vba excel-vba

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

这是我试过录制的宏

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

1 个答案:

答案 0 :(得分:2)

正如@CLR已经提到的那样,您需要打开一个工作簿来将工作表粘贴到其中。

以下内容可行,但请注意,这只是一个示例,而不是一个完整的解决方案。

您仍然至少需要对...执行正确的错误处理。

  1. 在打开工作簿时捕获错误,并且受到保护(因为已经被其他用户打开)或文件/路径错误。
  2. 在重命名工作表时捕获错误,因为名称必须是唯一的。重新使用现有名称将引发错误。
  3. 如果导致错误,未实现错误处理可能会导致未确定的条件。

    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