我有三本工作簿,一本父母书,一本图书书和一本日志。vba工作簿关闭跳过打开命令之前
父书打开一个图书馆,然后关闭图书馆。巧合的是,图书馆在工作簿中提供了关于打开或关闭时打开和关闭事件时写入日志的规定。
我的问题是,当从父书籍以编程方式打开该库时,会在关闭之前打开日志的代码被跳过。我没有得到任何错误,只是简单地评估了这条线,并没有产生任何结果。
CODE:
从我父母的书,我跑这条线:
...
Workbooks(parts_library_name).Close savechanges:=True
...
和运行这个代码库中的书:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set libwkb = ThisWorkbook
'last call to backup usage sheet
backup_exit_size
'exit
End Sub
Sub backup_exit_size()
Dim bypass_close_usage_library As Boolean
Application.DisplayAlerts = False
file_size_at_close = FileLen(ThisWorkbook.Path & "\" & ThisWorkbook.Name)
For Each Workbook In Workbooks
If Workbook.Name = "usage_library.xlsx" Then bypass_close_usage_library = True
Next
Application.ScreenUpdating = False
If bypass_close_usage_library = False Then
Workbooks.Open "somepath\usage_library.xlsx"
End If
Workbooks("usage_library.xlsx").Worksheets("usage").Cells(next_row_usage_library, 3) = file_size_at_close
Workbooks("usage_library.xlsx").Close savechanges:=True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
的问题是,当它到达此行:
Workbooks.Open "somepath\usage_library.xlsx"
编译器只需跳过该命令。
但是,只有这样的情况下,如果我得到来自另一本书的beforeClose事件。如果我从本身关闭本书,宏运行良好并打开日志很好。
我已经尝试了从父书声明,像
With library.xlsx
.RunAutoMacros xlAutoClose
.Close
End With
,但有相同的结果,则计算行,然后跳过它。
想法?
都是同一目录中的工作簿?如果不是,则提供文件的完整路径。 – Sorceri
编译器正在跳过该命令,可能是因为您的变量“bypass_close_usage_library”为false。 “usage_library”文件是否已经打开? – OpiesDad
是的,他们都在同一个目录中。重要的是要注意,当从关闭工作簿直接调用backup_exit_size()时,子运行正常;应该打开并关闭日志文件。 – user4467707