脚本在特定的时间在特定的工作簿中运行vba代码
我对脚本和batch file一无所知,但是我不得不阅读一些关于它能够开始并尝试写一个代码,然后我想把我的Windows任务计划。
我想要做的是打开一个指定的excel工作簿,运行一个名为HamtaData的macros,然后保存工作簿并closures。
我今天有什么,脚本(文件名STARTexcel)
dim args, objExcel set args = wscript.arguments set objExcel = CreateObject ("Excel.Application") start Excel.exe "\\global.com\home\Se\58\dx\Desktop\Test\Deliveries.xlsm" 'This is the workbook i want to open. objExcel.run "HamtaData" ' this is the macro i want to run. objExcel.activeworkbook.Save objExcel.activeworkbook.Close(0) objExcel.Quit
我的batch file是,
cscript STARTexcel.vbs "\\global.com\home\Se\58\dx\Desktop\Test\Deliveries.xlsm"
我猜我缺less几大块,但是我的谷歌search不是在这方面的聪明。
我在想,我的batch file是我应该使我的Windows任务计划在未来某个时间运行。
我也尝试了这一行代码,我发现在谷歌和编辑它,以适应我的需要,没有成功。
'Code should be placed in a .vbs file Set objExcel = CreateObject("Excel.Application") objExcel.Application.Run "'C:\Users\Ryan\Desktop\Sales.xlsm'SalesModule.SalesTotal" objExcel.DisplayAlerts = False objExcel.Application.Save objExcel.Application.Quit Set objExcel = Nothing
在这里,我得到错误不能保存工作簿。 有任何想法吗? 提前致谢,
好。 我会给你一个答案,我有点评论你。
我做了一个演示文件来testing它。 http://hoppvader.nu/Run.xlsm
基本上,这是一个打开工作簿的运行。 询问用户是否要运行macros。
如果用户不在场(5秒钟不活动),一个发送键将按下input,这意味着运行macros。
这个文件然后需要由Windows任务计划来执行,并且你需要确保“启用内容警告”不会通过禁用警告(坏主意)或为这个macros创build一个签名(好得多)来显示https:// support.office.com/en-us/article/Digitally-sign-a-macro-project-6e5de679-01d4-4387-85e0-92e3e9a49483 。
这个“问题”在于,即使点击“否”,wait()也会等待,所以每次打开它时,这个macros都会耗费你五秒的生命。
在上面的文件中运行的代码:
Private Sub Workbook_Open() UserForm1.Show 0 newHour = Hour(Now()) newMinute = Minute(Now()) newSecond = Second(Now()) + 5 waitTime = TimeSerial(newHour, newMinute, newSecond) Application.Wait waitTime Application.SendKeys ("~") End Sub
和
Private Sub CommandButton1_Click() MsgBox "Run macro" Unload Me End Sub Private Sub CommandButton2_Click() MsgBox "Don't run macro" Unload Me End Sub