在定义路径变量并取决于其当前位置之后,我有一个 .xlsb 文件,该文件在另一台计算机上运行。我将不同 xlsm 文件的 VBA 项目添加到 .xlsb。我正在尝试使用以下代码中的以下任一行从 .xlsb 文件的模块 2 运行宏:
Dim path As String
path = Application.ActiveWorkbook.path
path = path & "\"
Workbooks("2cDataSet.xlsm").Activate
'MsgBox (path & "2cDataSet.xlsm!publicdatahandler")
'Application.Run (path & "2cDataSet.xlsm!publicDataHandler")
'Application.Run (path & "'2cDataSet.xlsm'!publicDataHandler")
'Application.Run (path & "2cDataSet.xlsm!Module2.publicDataHandler")
'Application.Run (path & "'2cDataSet.xlsm'!Module2.publicDataHandler")
'Application.Run ("2cDataSet.xlsm!publicDataHandler")
'Application.Run ("'2cDataSet.xlsm'!publicDataHandler")
'Application.Run ("2cDataSet.xlsm!Module2.publicDataHandler")
'Application.Run ("'2cDataSet.xlsm'!Module2.publicDataHandler")
'Application.Run "2cDataSet.xlsm!publicDataHandler"
'Application.Run "'2cDataSet.xlsm'!publicDataHandler"
'Application.Run "2cDataSet.xlsm!Module2.publicDataHandler"
'Application.Run "'2cDataSet.xlsm'!Module2.publicDataHandler"
'Application.Run path & "2cDataSet.xlsm!publicDataHandler"
'Application.Run path & "'2cDataSet.xlsm'!publicDataHandler"
'Application.Run path & "2cDataSet.xlsm!Module2.publicDataHandler"
'Application.Run path & "'2cDataSet.xlsm'!Module2.publicDataHandler"
'Run macro:="2cDataSet.xlsm!Module2.publicdatahandler"
'Run macro:="2cDataSet.xlsm!publicdatahandler"
它似乎与这里的问题相同,除了我认为这种情况下的问题是由 2 个不同的 excel 文件的融合引起的,而不是宏的未启用:
因为正如它所暗示的,我已经通过以下方式手动启用了宏和对象安全设置:
- 单击 Microsoft Office 按钮,然后单击 Excel 选项。
- 单击信任中心。
- 单击信任中心设置。
- 单击宏设置。
- 单击以选中“信任对 VBA 项目对象模型的访问”复选框。
- 单击“确定”关闭“Excel 选项”对话框。
- 关闭并重新打开excel。
我还单击了该对象模型复选框上方的“启用宏按钮”。
我首先尝试先手动打开 2cDataSet.xlsm,然后在出现提示时手动启用宏,然后打开父 .xlsb,反之亦然(在为.xlsb)
而且我认为我在尝试的任何选项中都尝试了正确的语法。*到目前为止,我也知道单个 ' 仅在名称包含空格的情况下使用。
我没有删除宏并重新创建它。
我检查了“选项显式”是否没有写为“选项显式”,但根本没有写
子是公开的。
我写它的办公室是2016年,另一台电脑上的版本是2013年,但我在2016年办公室遇到了同样的错误,但对于某些我未知的原因,有时在切换子语法的调用或重新 -打开excel文件,错误不再发生或不一致。
关于为什么 excel 给出以下错误的任何建议:
无法运行宏 宏在此工作簿中可能不可用,或者所有宏可能被禁用
在调用 sub 之后?
附言。它用于分布式自动计算,因此我将无法编辑 pc(或 excel)设置,并且弹出窗口是一个 nono :)
问题是在合并 vba 项目后,即使父 .xlsb 文件被复制并移动到不同的路径,excel 仍将对 .xlsm 文件的引用保留到旧文件夹中。
该解决方案目前正在验证为:将原始文件移动到新父文件的文件夹中,并与包含的实际 .xlsm 共享整个文件夹,以便在另一台计算机上运行