我有6個文件逐個執行宏。帶有VBA代碼的第一個文件(主文件)打開剩餘的5個文件並啓動VBA連鎖反應。第二個文件做宏工作並啓動第三個文件的工作,並且它一直到第六個文件。Excel VBA宏跨工作簿未完全執行
第6個文件然後引用第1個文件的宏(主),應該關閉所有5個工作簿(除了這個1stone)。第六工作簿的代碼如下所示:
Application.DisplayAlerts = False
ThisWorkbook.RefreshAll
Workbooks("6th_file.xlsm").SaveAs Filename:= _
"[URL]6th_file_htm.htm"
Application.Run ("refresh_tool.xlsm!CloseAll.CloseAll")
接下來到:
Option Explicit
Sub CloseAll()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim wb3 As Workbook
Dim wb4 As Workbook
Dim wb5 As Workbook
Set wb1 = Workbooks("wb1.xlsm")
Set wb2 = Workbooks("wb2.xlsm")
Set wb3 = Workbooks("wb3.xlsm")
Set wb4 = Workbooks("wb4.xlsm")
Set wb5 = Workbooks("wb5.xlsm")
wb1.Close
wb2.Close
wb3.Close
wb4.Close
wb5.Close
其結果是,在鏈只有第一個工作簿被關閉運行時(refresh_tool,WB2,WB3, wb4和wb5保持打開狀態)。
但是,當CloseAll()單獨運行時,它可以正常工作並關閉所有5個文件(只有refresh_tool保持打開狀態)。
我試着先用Workbooks(「...」)使它變得簡單。關閉,但已經嘗試了幾件事情,結束了上面的代碼。
任何人都可以幫忙嗎?
因此,關閉工作簿的代碼位於第一個工作簿中?在您的 Sub CloseAll()代碼中,第一個工作簿是首先關閉的工作簿!因此wb1.Close之外的代碼都不會運行。 – Absinthe
我強烈建議不要在這種「連鎖反應」方法中使用它。將所有代碼放在單個工作簿中(不管是第1冊還是單獨的主代碼工作簿),然後從主文件夾中打開並關閉其他工作簿。 –
@Absinthe,不,它不在wb1中,共有6個文件。 CloseAll()位於「refresh_tool.xlsm」中,也就是說,文件wb0。 – Mateusz