在允许宏之后,为什么来自不同工作簿的宏不可能无法访问?

时间:2016-05-29 22:07:59

标签: vba module call xlsm xlsb

在定义路径变量并依赖于其当前位置之后,我有一个.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"

它似乎与此处的问题相同,除了我预计这种情况下的问题是由两个不同的excel文件融合而不是宏的未启用引起的:

Cannot run the macro... the macro may not be available in this workbook

因为它表明我通过以下方式手动启用了宏和对象安全设置:

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

    我首先尝试首先手动打开2cDataSet.xlsm并在提示时手动启用宏,然后打开父.xlsb,反之亦然(.xlsm自动打开,而不启动启用后启用宏) .xlsb的宏

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

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

    我检查了“明确的选项”是不是写成“明确的选项”但是根本没有写出

    该子是公开的。

    我写的办公室是在2016年,另一台PC上的版本是2013年,但我在2016办公室遇到了同样的错误,但对于一些人来说,我不明原因,有时在切换调用子语法之后或重新打开excel文件,错误不再发生或不一致。

    有关excel原因的任何建议都会出现以下错误:

      

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

    在调用sub之后

    聚苯乙烯。这是一个分布式自动计算,所以我将无法编辑pc(或excel)设置,弹出窗口是nono:)

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

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

1 个答案:

答案 0 :(得分: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

Trusted Locations