脚本在特定的时间在特定的工作簿中运行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 

在这里输入图像说明