在工作时间以外停用 Excel 个加载项
Deactivate Excel add-in outside business hours
每当打开工作簿时,我都使用加载项将所有 vba 代码导出到存储库。它非常适合版本控制,但我必须记得在每天晚上离开办公室之前停用它。如果我不这样做,运行 的自动 Excel 进程会在一夜之间生成提示,并且在对话框被清除之前无法继续(即导出代码...Yes/No?)。当我登录时,我盯着几个 Excel 等待响应的对话框。
请注意,我并不总是想导出代码...有时我只想打开文件并检查一些内容,因此需要 Yes/No 对话框。
如何在每晚自动进程开始前的设定时间自动停用加载项 运行ning?请注意,早上手动重新激活它是没有问题的。
如果无法自动停用加载项,可以选择在夜间使用 "No" 自动回答对话框。有没有办法自动点击 MsgBox 的否按钮?
提前致谢!
尝试像这样在所有代码周围放置两个 IF 语句:
Sub test()
If TimeValue(Now) < TimeValue("06:00 PM") Then
If TimeValue(Now) < TimeValue("08:00 AM") Then
'Original Code Here
Else: Exit Sub
End If
Else: Exit Sub
End If
End Sub
如果晚于 6:00 下午或早于 8:00 上午,这将自动退出子。
如果您希望能够灵活地选择在下班后执行您的代码,您可以这样做:
Sub test()
ShowDurationSecs = 5
Dim Rslt As Integer
If TimeValue(Now) < TimeValue("06:00 PM") Then
If TimeValue(Now) < TimeValue("08:00 AM") Then
Rslt = CreateObject("WScript.Shell").PopUp("Move Code to Repository?", ShowDurationSecs, "Message Title", 4 + 32)
If Rslt = 6 Then
'Original Code Here
Else: Exit Sub
End If
Else: Exit Sub
End If
Else: Exit Sub
End If
End Sub
此代码创建一个带有计时器的对话框。如果框超时或用户单击 'No',则 Rslt
将不等于 6,代码将不会执行。如果用户单击 'Yes',Rslt
将等于 6,代码将执行。弹出框只会在这些时间之间显示。如果对话框不是那么麻烦,您可以去掉时间条件,要求用户每次都回答 'Yes' 以便 运行 代码。任何更适合您的流程。
Jarom 的建议导致了这个解决方案(感谢 Jarom!)。使用布尔值对条件进行了一些修改:
Sub test()
Dim Rslt As Integer
ShowDurationSecs = 5
'if after hours, then pop up timed-dialog and acquire Rslt value (actively or passively)
If TimeValue(Now) < TimeValue("07:00 AM") And TimeValue(Now) > TimeValue("07:00 PM") Then Rslt = CreateObject("WScript.Shell").PopUp("Do you want to save the VBA code in this workbook to the git repository?", ShowDurationSecs, "Save Code to Repository", 4 + 32)
If (TimeValue(Now) > TimeValue("07:00 AM") And TimeValue(Now) < TimeValue("07:00 PM")) Or Rslt = 6 Then 'if business hours OR Rslt = 6
'run code export routine
Else: Exit Sub
End If
End Sub
+1 给 Jarom 的定时 pop-up 想法...我以前从未使用过这种技术,并且肯定会再次使用它。
每当打开工作簿时,我都使用加载项将所有 vba 代码导出到存储库。它非常适合版本控制,但我必须记得在每天晚上离开办公室之前停用它。如果我不这样做,运行 的自动 Excel 进程会在一夜之间生成提示,并且在对话框被清除之前无法继续(即导出代码...Yes/No?)。当我登录时,我盯着几个 Excel 等待响应的对话框。
请注意,我并不总是想导出代码...有时我只想打开文件并检查一些内容,因此需要 Yes/No 对话框。
如何在每晚自动进程开始前的设定时间自动停用加载项 运行ning?请注意,早上手动重新激活它是没有问题的。
如果无法自动停用加载项,可以选择在夜间使用 "No" 自动回答对话框。有没有办法自动点击 MsgBox 的否按钮?
提前致谢!
尝试像这样在所有代码周围放置两个 IF 语句:
Sub test()
If TimeValue(Now) < TimeValue("06:00 PM") Then
If TimeValue(Now) < TimeValue("08:00 AM") Then
'Original Code Here
Else: Exit Sub
End If
Else: Exit Sub
End If
End Sub
如果晚于 6:00 下午或早于 8:00 上午,这将自动退出子。
如果您希望能够灵活地选择在下班后执行您的代码,您可以这样做:
Sub test()
ShowDurationSecs = 5
Dim Rslt As Integer
If TimeValue(Now) < TimeValue("06:00 PM") Then
If TimeValue(Now) < TimeValue("08:00 AM") Then
Rslt = CreateObject("WScript.Shell").PopUp("Move Code to Repository?", ShowDurationSecs, "Message Title", 4 + 32)
If Rslt = 6 Then
'Original Code Here
Else: Exit Sub
End If
Else: Exit Sub
End If
Else: Exit Sub
End If
End Sub
此代码创建一个带有计时器的对话框。如果框超时或用户单击 'No',则 Rslt
将不等于 6,代码将不会执行。如果用户单击 'Yes',Rslt
将等于 6,代码将执行。弹出框只会在这些时间之间显示。如果对话框不是那么麻烦,您可以去掉时间条件,要求用户每次都回答 'Yes' 以便 运行 代码。任何更适合您的流程。
Jarom 的建议导致了这个解决方案(感谢 Jarom!)。使用布尔值对条件进行了一些修改:
Sub test()
Dim Rslt As Integer
ShowDurationSecs = 5
'if after hours, then pop up timed-dialog and acquire Rslt value (actively or passively)
If TimeValue(Now) < TimeValue("07:00 AM") And TimeValue(Now) > TimeValue("07:00 PM") Then Rslt = CreateObject("WScript.Shell").PopUp("Do you want to save the VBA code in this workbook to the git repository?", ShowDurationSecs, "Save Code to Repository", 4 + 32)
If (TimeValue(Now) > TimeValue("07:00 AM") And TimeValue(Now) < TimeValue("07:00 PM")) Or Rslt = 6 Then 'if business hours OR Rslt = 6
'run code export routine
Else: Exit Sub
End If
End Sub
+1 给 Jarom 的定时 pop-up 想法...我以前从未使用过这种技术,并且肯定会再次使用它。