我想设置我的电脑,每天一次,它会自动执行我在电子表格或访问数据库中编写的VBA宏。
那么有没有办法从批处理文件中调用VBA宏,或类似的东西?
答案 0 :(得分:6)
不确定。使用命令行开关,提供的链接用于有关命令行开关的页面。 For Access,For 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之上添加了另一层,因此通常不是一个好主意。)