VBA项目资源管理器在使用宏关闭工作簿后显示excel工作簿

时间:2018-07-25 12:51:53

标签: excel vba excel-vba

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

宏在做什么:

  1. 打开模板工作簿
  2. 从当前工作簿中复制数据
  3. 以其他名称保存

以上所有内容都包含在循环中,因为我需要能够对几十个条目执行此操作。

我曾尝试从内存中清除对象,但显然我仍然做错了事。

宏代码:

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

1 个答案:

答案 0 :(得分:0)

使用--- - hosts: myIP tasks: - name: Install a yum package in Ansible example yum: name: ThePackageIWantToInstall state: present 代替dWb.Close SaveChanges:=True关闭工作簿