首页 > 解决方案 > 将工作簿中特定工作表中的内容复制到同一目录中另一个工作簿中的另一个特定工作表

问题描述

背景:
我在同一个目录中有两个工作簿,每个工作簿都有不同的工作表。

我想打开 book2.xlsx,执行 VBA,从 book1.xls 中的“sheet1”复制整个内容。在此之后, book1.xls 应该会自动关闭。

我有一个代码,它将内容移动到工作表旁边,然后我必须将此工作表重命名为所需的工作表。问题在于,另一张表中的公式无法按预期工作。代码如下,

Sub XLVBACopyFiles()
    Dim MonthlyWB As Variant
    Dim FileName As String

    FileName = ActiveWorkbook.Name

    Path = ActiveWorkbook.Path & "\"

    Application.DisplayAlerts = False
    Application.EnableEvents = False

    'Copy the sheet1 next to sheet2 in the current workbook

    Application.Workbooks.Open (Path & "book1.xls")
        Sheets(Array("sheet1")).Select
        Sheets("sheet1").Activate
        Sheets(Array("sheet1")).Move After:=Workbooks( _
            FileName).Sheets("sheet2")

    Application.EnableEvents = True
    Application.DisplayAlerts = True

    Workbooks(FileName).Save
    ' Workbooks(FileName).Close
End Sub

对此的任何帮助将不胜感激。

标签: excelvba

解决方案


如果您想要什么,根据您上面的评论,将内容粘贴到“sheet2 本身”,请更新上面的代码:

Application.Workbooks.Open (Path & "book1.xls")
        Sheets(Array("sheet1")).Select
        Sheets("sheet1").Activate
        **Sheets(Array("sheet1")).Move After:=Workbooks( _
            FileName).Sheets("sheet2")**

  Application.Workbooks.Open (Path & "book1.xls")
            Sheets(Array("sheet1")).Select
            Sheets("sheet1").Activate
            'Next 2 lines will select the range of content to be copied, and CTRL+C it. Edit it to your desire range
            Range("A1:A5").Select
            Selection.Copy
            Sheets("Sheet2").Select
            Range("A1").Select ' In this line you should choose which cell to start pasting
            ActiveSheet.Paste

此外,要关闭工作簿,请使用:

Workbooks("book1.xls").Close SaveChanges:=True

注意 SaveChanges 选项,如果要保存或不保存此工作簿,请选择 True/False


推荐阅读