0

在定义路径变量并取决于其当前位置之后,我有一个 .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 文件的融合引起的,而不是宏的未启用:

无法运行宏...此工作簿中可能没有该宏

因为正如它所暗示的,我已经通过以下方式手动启用了宏和对象安全设置:

  1. 单击 Microsoft Office 按钮,然后单击 Excel 选项。
  2. 单击信任中心。
  3. 单击信任中心设置。
  4. 单击宏设置。
  5. 单击以选中“信任对 VBA 项目对象模型的访问”复选框。
  6. 单击“确定”关闭“Excel 选项”对话框。
  7. 关闭并重新打开excel。

我还单击了该对象模型复选框上方的“启用宏按钮”。

我首先尝试先手动打开 2cDataSet.xlsm,然后在出现提示时手动启用宏,然后打开父 .xlsb,反之亦然(在为.xlsb)

而且我认为我在尝试的任何选项中都尝试了正确的语法。*到目前为止,我也知道单个 ' 仅在名称包含空格的情况下使用。

我没有删除宏并重新创建它。

我检查了“选项显式”是否没有写为“选项显式”,但根本没有写

子是公开的。

我写它的办公室是2016年,另一台电脑上的版本是2013年,但我在2016年办公室遇到了同样的错误,但对于某些我未知的原因,有时在切换子语法的调用或重新 -打开excel文件,错误不再发生或不一致。

关于为什么 excel 给出以下错误的任何建议:

无法运行宏 宏在此工作簿中可能不可用,或者所有宏可能被禁用

在调用 sub 之后?

附言。它用于分布式自动计算,因此我将无法编辑 pc(或 excel)设置,并且弹出窗口是一个 nono :)

问题是在合并 vba 项目后,即使父 .xlsb 文件被复制并移动到不同的路径,excel 仍将对 .xlsm 文件的引用保留到旧文件夹中。

该解决方案目前正在验证为:将原始文件移动到新父文件的文件夹中,并与包含的实际 .xlsm 共享整个文件夹,以便在另一台计算机上运行

4

1 回答 1

0

我将不同 xlsm 文件的 VBA 项目添加到 .xlsb。

您必须像这样打开 *.xlsm:

Sub openFile_RunMacro()

     Workbooks.Open "File2.xlsm" 'if File2.xlsm is in the same path as File1.xslb

     'otherwise » Workbooks.Open path & "File2.xlsm" «

     Application.Run ("File2.xlsm!Test")

End Sub

如果激活宏的消息让您烦恼,请尝试将使用的路径设置为受信任的位置

编辑

我正在尝试使用以下代码中的以下任一行从.xlsb文件的模块 2 运行宏

所以你正在尝试从.xlsb文件运行代码?然后,您必须将代码中的文件名从.xlsm更改为.xlsb

受信任的位置

于 2016-05-30T06:17:56.893 回答