不确定这是否可行,但它似乎应该是可行的....毕竟它是2013年!我找到的一些论坛帖子表明它是,但我没有成功地让它发挥作用......
我有一个带有宏的Access 2010数据库,可以从3个不同的网站下载文件,然后继续导入数据并对其进行处理。它运行1小时17分钟。
我想安排这个宏在凌晨4点运行,所以它完成了所有的咖啡时间,并且工作时间从早上8点开始......所以我创建了一个VBScript来运行它,然后将其放入任务调度程序中期望的时间。
这是一个用户数据库,我只在我的电脑上使用。
我做了一些研究,但似乎无法让这个工作。这是我到目前为止所做的:
“Pricing Model.accdb”中的Access 2010中的“Main”模块内的宏:
Public Sub Download_And_Import()
ProcStep = ""
ExecStep = 1
DoCmd.SetWarnings False
'Empty the Execution Progress table
DoCmd.RunSQL "DELETE * FROM EXECUTION_PROGRESS"
Call Update_EXECUTION_PROGRESS(Format(Now(), "YYYY/MM/DD HH:MM:SS"), ExecStep, "Starting Download_Files Main Procedure...")
Call Download_Files.Download_Files
Call Update_EXECUTION_PROGRESS(Format(Now(), "YYYY/MM/DD HH:MM:SS"), ExecStep, "Finished Download_Files Main Procedure...")
Call Update_EXECUTION_PROGRESS(Format(Now(), "YYYY/MM/DD HH:MM:SS"), ExecStep, "Starting Import_Files Main Procedure...")
Call Import_Files.Import_Files
Call Update_EXECUTION_PROGRESS(Format(Now(), "YYYY/MM/DD HH:MM:SS"), ExecStep, "Finished Import_Files Main Procedure, closing application now...")
DoCmd.SetWarnings True
End Sub
然后我创建了以下VBScript以在外部运行Access VBA Macro:
dim accessApp
set accessApp = createObject("Access.Application")
accessApp.OpenCurrentDataBase("G:\Pricing DB\Pricing Model.accdb")
accessApp.Run "Download_And_Import"
accessApp.Quit
set accessApp = nothing
我收到消息“非法函数调用,第4行”,这是步骤:
accessApp.Run "Download_And_Import"
非常感谢任何想法/帮助!提前谢谢!
中号
答案 0 :(得分:3)
我认为VBScript本身没有任何问题。我复制了您的代码,更改了db文件名和过程名称,并且运行时没有错误。所以我的猜测是,当尝试运行该过程时,Access的VBScript错误会“冒泡”。
在Access中打开Pricing Model.accdb
,转到立即窗口( Ctrl + g ),输入以下行并按 Enter
Application.Run "Download_And_Import"
如果出现错误,您肯定在该过程中出现问题。如果它没有抛出错误,如果该过程需要Windows权限并且您没有将任务设置为在您的用户帐户下运行,则仍可能无法从计划任务运行它。
如果您需要对该过程进行故障排除,请先将Option Explicit
添加到模块的声明部分。然后从VB Editor的主菜单中运行Debug-> Compile。修复编译器抱怨的任何内容。重复直到代码编译没有错误。
在故障排除期间禁用DoCmd.SetWarnings False
,因为它会抑制信息。考虑用Database.Execute
方法替换DAO DoCmd.RunSQL
方法是否可以避免让SetWarnings
完全关闭。
答案 1 :(得分:0)
您可以尝试包含ProjectName:
accessApp.Run "[Pricing Model].Download_And_Import"
项目名称默认为数据库名称,因为空格而需要方括号。
这不应该是必要的,因为您的Sub是公开的,但值得一试。
答案 2 :(得分:0)
我遇到了相同的(msg)问题,脚本没问题!问题是我在开发模式下打开数据库测试脚本,一旦我关闭数据库,脚本运行良好。在测试脚本之前关闭数据库。