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