Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 从一个工作簿复制到另一个工作簿时,一个;“不想要的”;工作簿已创建_Vba_Excel - Fatal编程技术网

Vba 从一个工作簿复制到另一个工作簿时,一个;“不想要的”;工作簿已创建

Vba 从一个工作簿复制到另一个工作簿时,一个;“不想要的”;工作簿已创建,vba,excel,Vba,Excel,所以我有两个excel工作簿-工作簿A用作用户表单,工作簿B用作包含所有数据项的数据库(B是一个合并文件)。无论何时打开工作簿A,我都希望自动从工作簿B中提取所有数据,并将其复制到单独工作表中的工作簿A中。通过这样做,我可以实现一些其他功能,如检索以前的条目 因此,我在工作簿中使用了以下代码: Public Sub Workbook_open() Call get_AllUpdateEntries End Sub Sub get_AllUpdateEntries() Dim oriWo

所以我有两个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

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

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

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

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

如果您有
工作簿。打开(“文件路径”)
文件路径应为实际路径,例如C:\Desktop\MyWorkbook.xlsx当您将工作表复制到任何目标时,您可以使用单个工作表(原始工作表的副本)创建另一个新的活动工作簿。谢谢你,吉普!现在我可以将工作表从oriWorkbook复制到destWorkbook。但这总是会在工作簿中创建一个新的工作表。如果要将其粘贴到名为“所有更新条目”的特定工作表中,我必须做什么?是否必须将destWorkbook.Sheets.count替换为“所有更新条目”?不要复制工作表,复制单元格:
oriWorkbook.Worksheets(“工作表名称”).Usedrange.copy destWorkbook.Worksheets(“工作表名称”).Range(“A1”)
@NKAR,我已调整方法以删除任何原始工作表并重命名新复制的工作表。感谢您的所有输入!我还有最后一个问题。当我重新打开文件时,工作表中的所有更新条目都会被覆盖吗?实际上,它会被删除,并且会从工作簿中创建一个新的所有更新条目。