【发布时间】:2013-07-12 08:07:28
【问题描述】:
不确定这是否可行,但似乎应该可行....毕竟是 2013 年!我发现一些论坛帖子表明它是,但我没有成功让它工作......
我有一个带有宏的 Access 2010 数据库,它从 3 个不同的网站下载文件,然后继续导入数据并进行处理。运行时间为 1 小时 17 分钟。
我想安排这个宏在凌晨 4 点运行,以便在喝咖啡时间和早上 8 点开始工作时完成所有工作...所以我创建了一个 VBScript 来运行它,然后将其放入任务计划程序中想要的时间。
这是一个单用户数据库,我只在我的电脑上使用。
我已经做了一些研究,但我似乎无法让它发挥作用。这是我目前所拥有的:
Access 2010 中“Pricing Model.accdb”中“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 宏:
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"
非常感谢任何想法/帮助!提前致谢!
M
【问题讨论】:
-
在我定义了变量
ProcStep和ProcExec之后,代码对我来说运行良好。使应用程序可见 (accessApp.Visible = True),以便您可以使用宏编辑器进行调试。 -
我现在无法对此进行测试,但请尝试添加括号:
accessApp.Run ("Download_And_Import")。 -
嗨 Ansgar Wiechers,很抱歉,我是 VBS 新手(虽然我有一点 VBA 经验)。根据您的建议,当我添加行 (accessApp.Visible = True) 时,当我运行 VBS 时访问会打开,但我仍然收到非法函数调用消息。我不确定你在定义 ProcStep 和 ProcExec 时指的是什么,你能详细说明一下吗?感谢您的帮助。
-
您好 UberNubIsTrue,我尝试了您的建议,并在第 4 行(宏运行调用)收到“非法函数调用”消息。谢谢!
-
@user2469528 - 我可以提出的唯一其他建议是确保您的 Sub 的名称与其所在的模块不同。这在过去尝试使用
application.run。
标签: ms-access vbscript vba scheduler