VBA:在工作簿中按名称查找工作表并在其旁边复制工作表

时间:2015-03-31 21:44:28

标签: excel vba excel-vba

我有点迷失了工作簿参考和嵌套条件。我想要实现的是,

  1. 查找工作簿,其工作表名称为“EMPLOYEE”。
  2. 检查上面的工作簿中是否有任何工作表名称为“COMPANY”,如果存在则删除。
  3. 将活动工作簿(非活动工作表)中的工作表“COMPANY”复制到上述工作簿。
  4. 我到目前为止,但不确定如何将非活动工作表“COMPANY”从活动工作簿复制到我们在第1点中找到的工作簿。

    任何建议都将不胜感激。

        Application.DisplayAlerts = False
        For Each wb In Application.Workbooks
           For Each ws In wb.Sheets
           If ws.Name = "EMPLOYEE" Then wb.Sheets("COMPANY").Delete
           Next ws
        Next wb
        Application.DisplayAlerts = True
    

1 个答案:

答案 0 :(得分:0)

通过活动工作簿是指代码模块运行该操作的那个?如果是这种情况,则可以使用ThisWorkbook作为 Company 工作表的父级来引用它,您希望将其复制到刚刚删除 Company 工作表来自。

   Application.DisplayAlerts = False
   On Error Resume Next
    For Each wb In Application.Workbooks
        For Each ws In wb.Sheets
            If ws.Name = "EMPLOYEE" Then
                wb.Sheets("COMPANY").Delete
                ThisWorkbook.Sheets("Company").Copy Before:=wb.Sheets(1)
            End If
        Next ws
    Next wb
    Application.DisplayAlerts = True

我发现ThisWorkbookActiveWorkbook更明确,特别是在此类操作中,焦点可能(默认情况下)更改为接收公司工作表。

或者,您可以将工作表对象引用分配给要复制的 Company 工作表,并在进行工作簿集合时重复使用该引用。