有没有办法自动执行VBA宏?

时间:2012-12-31 14:27:47

标签: vba windows-7

我想设置我的电脑,每天一次,它会自动执行我在电子表格或访问数据库中编写的VBA宏。

那么有没有办法从批处理文件中调用VBA宏,或类似的东西?

2 个答案:

答案 0 :(得分:6)

不确定。使用命令行开关,提供的链接用于有关命令行开关的页面。 For AccessFor Excel

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

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开销的情况下运行并安排。 :)

答案 1 :(得分:0)

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

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

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

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

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

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