我有一个随Windows Scheduler自动打开的Excel文件。另外,我还有一个Auto_Open
子项可以立即运行宏。为了避免每次打开它都会开始运行而没有机会对其进行修改,我设置了一个msgbox
,让我选择是否运行宏。但是,我希望Excel在10秒钟后自动选择“是”,而我却无法获得它。这是我的代码:
我尝试不使用变量直接放置秒,也尝试单独使用Case -1
,但没有任何效果。
Sub Auto_Open()
Set WSH = CreateObject("WScript.Shell")
'cTime = 10
BtnCode = WSH.Popup("¿Desea generar la consulta de vacaciones?", cTime, "Consulta", vbYesNo)
Select Case BtnCode
Case vbYes
Call consulta
Case vbNo
Case 1, -1
Call consulta
End Select
End Sub
答案 0 :(得分:1)
结合使用用户表单和模块来运行它可能会更容易。 UserForm需要用Msgbox
代替您所做的任何事情。您需要的代码如下所示:
USERFORM衣服
Private Sub CommandButton2_Click()
'Run code for yes
'then
Unload Me
End Sub
Private Sub CommandButton1_Click()
'run code for "no".
'then
Unload Me
End Sub
Private Sub UserForm_Activate()
Application.OnTime Now + TimeValue("00:00:10"), "KeepItGoing"
End Sub
然后,您可以使其与外部模块进行交互:
Sub launchSOMETHING()
'Run this first
UserForm1.Show
End Sub
Sub KeepItGoing()
If UserForm1.Visible = True Then
MsgBox "BOOOOMO"
Unload UserForm1
End If
End Sub
You can see an example in this file here.
更新:看来,Msgbox
打开时所有宏都将暂停。在下面的两个过程中,您会注意到,即使关闭该框,第二个也不会被触发,即使它应该在5秒钟内运行。
Sub TestWhatMsgBoxDoes()
Application.OnTime Now + TimeValue("00:00:5"), "someOtherMacro"
MsgBox "Everything is on hold?"
End Sub
Sub someOtherMacro()
Application.StatusBar = "The Second Macro has run at" & Now()
End Sub
答案 1 :(得分:0)
我认为与“呼叫咨询”过程有关,请尝试使用megbox对其进行测试。
答案 2 :(得分:0)
好的,所以经过大量研究,我设法做到了自己想要的而没有很多问题。 首先,我创建了一个包含以下内容的脚本(.vbs文件):
Dim objExcel
Dim objWB
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWB = objExcel.Workbooks.Open("R:path\file.xlsm")
objExcel.Run "MyMacroName"
objWB.Save
objWB.Close False
objExcel.Quit
现在,每次我运行脚本时,宏都会自动运行。我还设置了Windows Scheduler Event,以便它将与脚本一起单独运行。这样,我不需要弹出窗口问我是否要运行某些东西,并且只有在事件由设置的条件触发时,脚本才会运行。
另一方面,当打开工作簿时,Excel文件本身不会自动运行,因此任何用户都可以对其进行修改而没有任何问题。
感谢帮助过我的人们。