3

不确定这是否可行,但似乎应该可行....毕竟是 2013 年!我发现一些论坛帖子表明它是,但我没有成功让它工作......

我有一个带有宏的 Access 2010 db,它从 3 个不同的网站下载文件,然后继续导入数据并处理它。它运行1小时17分钟。

我想安排这个宏在凌晨 4 点运行,所以它在咖啡时间和早上 8 点开始工作时全部完成和除尘......所以我创建了一个 VBScript 来运行它,然后将其放入任务计划程序中所需的时间。

它是一个单用户数据库,我只在我的 PC 上使用。

我已经做了一些研究,但我似乎无法让它发挥作用。这是我到目前为止所拥有的:

Access 2010 中“Pricing Model.accdb”中“主”模块中的宏:

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"

任何想法/帮助都非常感谢!提前致谢!

4

3 回答 3

3

我看不出 VBScript 本身有什么问题。我复制了你的代码,更改了 db 文件名和过程名,它运行没有错误。所以我的猜测是当它尝试运行该过程时,来自 Access 的 VBScript 错误“冒泡”。

在 Access 中打开Pricing Model.accdb,转到立即窗口 ( Ctrl+ g),输入以下行并按Enter

Application.Run "Download_And_Import"

如果这引发错误,那么您肯定在该过程中遇到问题。如果它没有引发错误,如果该过程需要 Windows 权限并且您没有将任务设置为在您的用户帐户下运行,您仍然可能无法从计划任务运行它。

如果您需要对该过程进行故障排除,请首先添加Option Explicit到模块的声明部分。然后从 VB 编辑器的主菜单运行 Debug->Compile。修复编译器抱怨的任何问题。重复直到代码编译没有错误。

在故障排除期间禁用DoCmd.SetWarnings False,因为它会抑制信息。考虑用 DAODatabase.Execute方法代替是否DoCmd.RunSQL可以让您完全避免SetWarnings关闭。

于 2013-07-14T21:19:20.050 回答
0

您可以尝试包括 ProjectName:

accessApp.Run "[Pricing Model].Download_And_Import"

project-name 默认为数据库名称,由于有空格,所以需要方括号。

这不应该是必要的,因为您的 Sub 是公开的,但值得一试。

于 2013-07-14T14:09:17.370 回答
0

我遇到了同样的(msg)问题,脚本没问题!问题是我在开发模式下打开数据库时测试脚本,一旦我关闭数据库,脚本运行良好。在测试脚本之前关闭数据库。

于 2017-04-14T18:16:01.313 回答