4

我想设置我的计算机,使其每天自动执行我在电子表格或访问数据库中编写的 VBA 宏。

那么有什么方法可以从批处理文件中调用 VBA 宏,或者类似的东西?

4

2 回答 2

6

当然。使用命令行开关,提供的链接是关于命令行开关的页面。对于 Access ,对于 Excel

这是我在加载 msaccess 文件然后运行存储的宏的 .bat 文件中的示例。

start msaccess "%localFolder%%localFileName%" /x %macroName% 在这种情况下%localFolder%%localFileName%,加起来就是包含 mdb/accdb 文件的完整路径,并且%macroName%是宏的名称。

对于 Excel,只需将要运行的任何内容放入Workbook.Open事件中。然后使用如下命令加载它: start excel %workbookPath%

这将创建一个新的 Excel 实例,打开工作簿并触发Workbook.Open事件。如果您认为您可能打开了工作簿,您可能还希望传递只读参数/r,以便在无需用户输入的情况下重新打开工作簿。

设置好 .bat 文件后,只需使用 Windows 调度程序对其进行调度。

就个人而言,除非您的脚本是 Access 或 Excel 特定的,否则我建议您在 .VBS 中重写您的脚本,以便它可以在没有 Excel 或 Access 开销的情况下运行并安排它。:)

于 2012-12-31T15:14:04.230 回答
0

如果要更改电子表格或 Access 数据库中的数据,您可能希望使用 VBS 和 DAO 对象:

Set Dbe = CreateObject("DAO.DBEngine.36") 

使用 DAO 更新数据的优点是它比 Excel 或 Access 应用程序更小、更快、更轻。更健壮,更稳定。崩溃时不会弹出消息框:不需要 GUI 登录用户。

只使用 DAO(或 ADO)的缺点是它是一个更小、更快、更轻的对象:它不能做任何事情,比如打印或 VBA(虽然你可以读取一个单元格,做一个 VBS 计算,然后插入数据)。

特别是,DAO/ADO 对象不能使 Excel 重新计算单元格值。为此,您需要 Excel。它不能在 Access 中使用 UDF。为此,您需要 Access。

(您可以使用 VBS 自动化 Access/Excel,但这只是在 Access/Excel 之上添加了另一层,因此这通常不是一个好主意。)

于 2013-01-03T11:50:09.223 回答