VBA project Explorer在使用宏关闭excel工作簿后显示它们

VBA project Explorer在使用宏关闭excel工作簿后显示它们,vba,excel,Vba,Excel,正如标题所示,在关闭另一个运行宏的工作簿后,它会一直显示在VBA资源管理器中 宏正在执行的操作: 打开模板工作簿 将数据从当前工作簿复制到其中 以其他名称保存 以上所有内容都包含在一个循环中,因为我需要能够对几十个条目执行此操作 我试着从记忆中清除这些物体,但显然我还是做错了什么 宏代码: Sub Openworkbook_Click() 'Updateby Extendoffice 20161008 Dim sWb As Workbook Dim dWb As Workbook

正如标题所示,在关闭另一个运行宏的工作簿后,它会一直显示在VBA资源管理器中

宏正在执行的操作:

  • 打开模板工作簿
  • 将数据从当前工作簿复制到其中
  • 以其他名称保存
  • 以上所有内容都包含在一个循环中,因为我需要能够对几十个条目执行此操作

    我试着从记忆中清除这些物体,但显然我还是做错了什么

    宏代码:

    Sub Openworkbook_Click()
    'Updateby Extendoffice 20161008
        Dim sWb As Workbook
        Dim dWb As Workbook
        Dim wbName As String
        Dim newName As String
        Dim relPath As String
        Dim i As Integer
        On Error Resume Next
    
        Set sWb = ActiveWorkbook
    
        'While loop
        i = 3
        Do While sWb.Sheets(1).Range("B" & i) <> ""
        'Set destination workbook
            Set dWb = Workbooks.Open("D:\1. WORK\AUDA\in progress\Betonvæg_test.xlsm")
    
            'Geometry copy
            sWb.Sheets(1).Range("B" & i).Copy
            dWb.Sheets(1).Range("K13").PasteSpecial
            sWb.Sheets(1).Range("C" & i).Copy
            dWb.Sheets(1).Range("K14").PasteSpecial
            sWb.Sheets(1).Range("D" & i).Copy
            dWb.Sheets(1).Range("K15").PasteSpecial
    
            'Reinforcement copy
            sWb.Sheets(1).Range("G" & i).Copy
            dWb.Sheets(1).Range("J19").PasteSpecial
            sWb.Sheets(1).Range("H" & i).Copy
            dWb.Sheets(1).Range("K19").PasteSpecial
    
            sWb.Sheets(1).Range("I" & i).Copy
            dWb.Sheets(1).Range("J20").PasteSpecial
            sWb.Sheets(1).Range("J" & i).Copy
            dWb.Sheets(1).Range("K20").PasteSpecial
    
            sWb.Sheets(1).Range("K" & i).Copy
            dWb.Sheets(1).Range("J21").PasteSpecial
            sWb.Sheets(1).Range("L" & i).Copy
            dWb.Sheets(1).Range("K21").PasteSpecial
    
            sWb.Sheets(1).Range("M" & i).Copy
            dWb.Sheets(1).Range("J22").PasteSpecial
            sWb.Sheets(1).Range("N" & i).Copy
            dWb.Sheets(1).Range("K22").PasteSpecial
    
            'Material properties
            sWb.Sheets(1).Range("E" & i).Copy
            dWb.Sheets(1).Range("E17").PasteSpecial
            sWb.Sheets(1).Range("F" & i).Copy
            dWb.Sheets(1).Range("E18").PasteSpecial
    
            'Other
            sWb.Sheets(1).Range("O" & i).Copy
            dWb.Sheets(1).Range("E12").PasteSpecial
            sWb.Sheets(1).Range("P" & i).Copy
            dWb.Sheets(1).Range("E13").PasteSpecial
            sWb.Sheets(1).Range("Q" & i).Copy
            dWb.Sheets(1).Range("E14").PasteSpecial
            sWb.Sheets(1).Range("R" & i).Copy
            dWb.Sheets(1).Range("E15").PasteSpecial
    
            'Copy loads
            sWb.Sheets(1).Range("S" & i).Copy
            dWb.Sheets(1).Range("F33").PasteSpecial
            sWb.Sheets(1).Range("T" & i).Copy
            dWb.Sheets(1).Range("G33").PasteSpecial
    
            sWb.Sheets(1).Range("U" & i).Copy
            dWb.Sheets(1).Range("F34").PasteSpecial
            sWb.Sheets(1).Range("V" & i).Copy
            dWb.Sheets(1).Range("G34").PasteSpecial
    
            sWb.Sheets(1).Range("W" & i).Copy
            dWb.Sheets(1).Range("G35").PasteSpecial
            sWb.Sheets(1).Range("X" & i).Copy
            dWb.Sheets(1).Range("F35").PasteSpecial
    
            'Save with different name & close
            newName = "Betonvæg_" & sWb.Sheets(1).Range("C" & i) & "x" & sWb.Sheets(1).Range("D" & i) & ".xlsm"
            relPath = ThisWorkbook.Path & "\"
    
            Application.DisplayAlerts = False
            dWb.SaveAs Filename:=relPath & newName
            Application.DisplayAlerts = True
            Workbooks(newName).Close SaveChanges:=True
    
            'Clear destination object
            Set dWb = Nothing
    
            'Increment i to read next line
            i = i + 1
    
        Loop
    
    End Sub
    
    子打开工作簿\u单击()
    '由Extendoffice 20161008更新
    将sWb设置为工作簿
    将dWb设置为工作簿
    将wbName设置为字符串
    将newName设置为字符串
    将路径重设为字符串
    作为整数的Dim i
    出错时继续下一步
    设置sWb=ActiveWorkbook
    “While循环
    i=3
    当sWb.Sheets(1)范围(“B”和“i”时执行此操作”
    '设置目标工作簿
    设置dWb=Workbooks.Open(“D:\1.WORK\AUDA\in progress\Betonvægæu test.xlsm”)
    '几何体副本
    sWb.表(1).范围(“B”和i).副本
    dWb.图纸(1).范围(“K13”).特殊粘贴
    sWb.表(1).范围(“C”和i).副本
    dWb.图纸(1).范围(“K14”).特殊粘贴
    sWb.表(1).范围(“D”和i).副本
    dWb.图纸(1).范围(“K15”).特殊粘贴
    “增援副本
    sWb.表(1).范围(“G”和i).副本
    dWb.表(1).范围(“J19”).特殊粘贴
    sWb.表(1).范围(“H”和i).副本
    dWb.图纸(1).范围(“K19”).特殊粘贴
    sWb.表(1).范围(“I”和I).副本
    dWb.图纸(1).范围(“J20”).特殊粘贴
    sWb.表(1).范围(“J”和i).副本
    dWb.图纸(1).范围(“K20”).特殊粘贴
    sWb.表(1).范围(“K”和i).副本
    dWb.图纸(1).范围(“J21”).特殊粘贴
    sWb.表(1).范围(“L”和i).副本
    dWb.图纸(1).范围(“K21”).特殊粘贴
    sWb.表(1).范围(“M”和i).副本
    dWb.图纸(1).范围(“J22”).特殊粘贴
    sWb.表(1).范围(“N”和i).副本
    dWb.图纸(1).范围(“K22”).特殊粘贴
    "材料特性",
    sWb.表(1).范围(“E”和i).副本
    图纸(1).范围(“E17”).特殊粘贴
    sWb.表(1).范围(“F”和i).副本
    图纸(1).范围(“E18”).特殊粘贴
    “其他的
    sWb.表(1).范围(“O”和i).副本
    图纸(1).范围(“E12”).特殊粘贴
    sWb.表(1).范围(“P”和i).副本
    图纸(1).范围(“E13”).特殊粘贴
    sWb.表(1).范围(“Q”和i).副本
    图纸(1).范围(“E14”).特殊粘贴
    sWb.表(1).范围(“R”和i).副本
    图纸(1).范围(“E15”).特殊粘贴
    “复制加载”
    sWb.表(1).范围(“S”和i).副本
    dWb.图纸(1).范围(“F33”).特殊粘贴
    sWb.表(1).范围(“T”和i).副本
    dWb图纸(1).范围(“G33”).特殊粘贴
    sWb.表(1).范围(“U”和i).副本
    dWb.图纸(1).范围(“F34”).特殊粘贴
    sWb.表(1).范围(“V”和i).副本
    dWb.图纸(1).范围(“G34”).特殊粘贴
    sWb.表(1).范围(“W”和i).副本
    dWb图纸(1).范围(“G35”).特殊粘贴
    sWb.表(1).范围(“X”和i).副本
    dWb.图纸(1).范围(“F35”).特殊粘贴
    '使用其他名称保存并关闭
    newName=“Betonvægæ”和sWb.Sheets(1)范围(“C”和“i”)和“x”和sWb.Sheets(1).范围(“D”和“i”)和“.xlsm”
    relPath=此工作簿。路径&“\”
    Application.DisplayAlerts=False
    dWb.SaveAs文件名:=relPath&newName
    Application.DisplayAlerts=True
    工作簿(新名称)。关闭保存更改:=True
    '清除目标对象
    设置dWb=Nothing
    “我要读下一行
    i=i+1
    环
    端接头
    
    使用
    dWb关闭工作簿。关闭SaveChanges:=True
    而不是
    工作簿(newName)。关闭SaveChanges:=True

    不幸的是,尝试了该方法,但仍然无法工作:(请尝试在“错误继续下一步”中注释掉行
    ,然后重新运行代码。可能发生了错误,但被抑制了。您好,注释掉了行。我得到的唯一错误是我尝试更改的模板受到了保护。解决了这个问题。我今天注意到的是,如果我从工作表中运行宏时打开VBA资源管理器后,检查时不会显示额外的工作簿。但是,如果在打开VBA资源管理器的情况下运行宏,则关闭的工作簿始终保留在那里。