使用批处理文件运行MS Access模块​​时出现“找不到对象”错误的原因是什么?

问题描述

我正在使用以下批处理文件打开我的访问数据库,并尝试从数据库内部运行模块(宏)。

批处理文件

@echo off
start "" "C:\Program Files (x86)\Microsoft Office\Office\MSACCESS.EXE" "C:\Users\%Username%\OneDrive - Colony Brands\Desktop\CID FE v3.1.accdb" /x MasterRun

模块(BuildFileAutoRun):

Public Sub MasterRun()
    DoCmd.OpenForm "frmAutoBuild",acnormal,"",acEdit,acnormal
    
Item:     [Forms]![frmAutoBuild]![cboYear] = "2020"
          [Forms]![frmAutoBuild]![cboBrand] = "Ashro"
          [Forms]![frmAutoBuild]![cboSeason] = "S21"
          
Forms!frmAutoBuild.cmdCreate_Click
End Sub

问题是我不断收到 Microsoft Access 和消息框显示的以下错误

Microsoft Access找不到对象“ MasterRun”。
如果“ MasterRun”是新的宏或宏组,请确保已保存并正确键入了其名称

我不确定我缺少什么。任何帮助将不胜感激!

解决方法

命令行开关需要宏对象的名称。 MasterRun不是宏,而是VBA过程。 Access中的宏不是VBA代码(Excel中的宏实际上只是VBA过程)。三种类型的宏:常规,嵌入式,数据。使用功能区“创建”选项卡上的“宏”构建器按钮创建常规宏,嵌入式宏位于表单和报表中,数据宏与表相关联。

宏可以调用VBA函数,而不是Sub过程。因此,要么使用等效的宏命令来完成打开表单并填充控件,要么构建可以被宏调用的功能。

打开数据库时,将自动执行一个名为AutoExec的常规宏-无需在开关中引用。

另一个选项是在数据库选项(或AutoExec宏)中设置的表单后面的代码,这些选项默认在数据库打开时打开-使用表单打开事件在表单打开时运行代码。