首页 > 解决方案 > 在工作簿之间复制工作表并覆盖当前工作表

问题描述

我编写了 VBA 代码来打开目标工作簿,复制其中一个工作表,并将其粘贴到当前工作簿中。

当我第二次或第三次运行它时……而不是覆盖当前的工作表,它会创建一个全新的工作表。

例如:工作表称为“数据”,第一次传输“数据”,第二次传输“数据(2)”。

我有另一个使用 VLOOKUP 函数查看此数据工作表的某些单元格的工作表,因此它具有正确的名称“数据”至关重要。

我曾考虑在运行宏之前删除当前(数据)文件,但是如果发生崩溃并且我丢失了工作表怎么办?有更好的解决方案吗?

注意:我正在从主工作簿运行宏以获取要从外部工作簿复制的工作表。

Sub UpdateT()

    Dim wb As Workbook
    Dim aw As Workbook

    'Open 2nd Workbook
    Set aw = Application.ActiveWorkbook
    Set wb = Workbooks.Open(Filename:="C:\Users\yilmadu00\Desktop\T.xlsx")

    'Copy To Different Workbook
    wb.Sheets("data").Copy After:=aw.Sheets("Data1")

    'Close 2nd Workbook
    aw.Save
    wb.Close

    aw.Sheets("data").Visible = False
    ActiveWorkbook.Protect ("Password")

End Sub

标签: excelvba

解决方案


检查工作表是否存在的功能(归功于@ScottCrainer):

Function SheetExists(ws As String)
    SheetExists = Not IsError(Application.Evaluate(ws & "!A1"))
End Function
笔记:

它确实存在问题:如果工作表上的 A1 包含错误,它将返回假阴性。


推荐阅读