脚本在特定时间在特定工作簿中运行vba代码

时间:2017-05-17 10:20:07

标签: excel vba excel-vba batch-file scheduled-tasks

我对脚本和批处理文件一无所知,但我已经开始阅读一些有关它的内容,以便能够启动并尝试编写一个代码,然后我想将其放入我的Windows任务计划中。

我想要做的是,打开一个指定的excel工作簿,运行一个名为HamtaData的宏,然后保存工作簿并关闭。

我今天拥有的是脚本(文件名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

我的批处理文件是,

 cscript STARTexcel.vbs "\\global.com\home\Se\58\dx\Desktop\Test\Deliveries.xlsm"

我猜我错过了一些大片,但我的谷歌搜索在这方面并不聪明。

我认为我的批处理文件是我应该让我的Windows任务计划在未来的某个时间运行。

我也尝试过这一行代码,我在google上找到并编辑它以满足我的需求而没有成功。

   '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

这里我得到错误,不能保存工作簿。有任何想法吗? 提前谢谢,

1 个答案:

答案 0 :(得分:1)

确定。我会在评论中给你一个答案。

我制作了一个演示文件来测试它。 http://hoppvader.nu/Run.xlsm

基本上,它是在工作簿上打开的。询问用户是否要运行宏。
如果用户不在场(5秒钟无效),发送键将按Enter键,表示运行宏。

然后需要通过Windows任务计划来执行此文件,并且您需要通过禁用警告(错误的想法)或为此宏创建签名(更好)来确保不显示“启用内容警告”{ {3}}。

这样的“问题”是即使你点击“否”,wait()也会等待,所以每次打开它时,这个宏将花费你五秒钟的生命。

在上述文件中运行的代码:

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

https://support.office.com/en-us/article/Digitally-sign-a-macro-project-6e5de679-01d4-4387-85e0-92e3e9a49483