从一个工作簿复制到另一个工作簿时,将创建一个“不需要的”工作簿

时间:2018-08-30 07:40:06

标签: excel vba excel-vba

所以我有两个excel工作簿-工作簿A用作用户窗体,工作簿B用作包含所有数据条目的数据库(B是合并文件)。每当我打开工作簿A时,我都希望自动从工作簿B中提取所有数据,并将其复制到单独工作表中的工作簿A中。这样,我可以实现其他一些功能,例如检索先前的条目。

所以我使用了工作簿中嵌入的以下鳕鱼:

Public Sub Workbook_open()

Call get_AllUpdateEntries

End Sub


Sub get_AllUpdateEntries()

Dim oriWorkbook As Workbook
Dim destWorkbook As Workbook

Set oriWorkbook = Workbooks.Open("FilePath")
Set destWorkbook = ThisWorkbook

oriWorkbook.Worksheets("Sheet Name").Copy

destWorkbook.Worksheets("Sheet Name").Paste

x.Close SaveChanges:=False

End Sub

但是,我无法运行此宏。它不会按我的要求复制工作表,此外,还会打开另一个不需要的工作簿。

1 个答案:

答案 0 :(得分:2)

将工作表复制到任何位置时,它将创建一个具有单个工作表(原始副本)的新活动工作簿。

为复制的工作表提供直接的目的地。

Sub get_AllUpdateEntries()

    Dim oriWorkbook As Workbook
    Dim destWorkbook As Workbook

    Set oriWorkbook = Workbooks.Open("FilePath")
    Set destWorkbook = ThisWorkbook

    'remove the destination worksheet if it already exists
    on error resume next
    application.displayalerts = false
    destWorkbook.worksheets("All Update Entries").delete
    application.displayalerts = true
    on error goto 0

    'copy worksheet to the end of the worksheet queue in ThisWorkbook
    oriWorkbook.Worksheets("Sheet Name").Copy _
       After:=destWorkbook.Sheets(destWorkbook.Sheets.count)

    oriWorkbook.Close SaveChanges:=False

    'rename the transferred worksheet
    destWorkbook.Sheets(destWorkbook.Sheets.count).name = "All Update Entries"

End Sub