在定义路径变量并依赖于其当前位置之后,我有一个.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
因为它表明我通过以下方式手动启用了宏和对象安全设置:
我还点击了“在对象模型上方启用宏按钮”复选框。
我首先尝试首先手动打开2cDataSet.xlsm并在提示时手动启用宏,然后打开父.xlsb,反之亦然(.xlsm自动打开,而不启动启用后启用宏) .xlsb的宏
我认为我在尝试的任何选项中都尝试了正确的语法。 *到现在为止,我也知道单个'仅用于名称包含空格的情况。
我没有删除宏并重新创建它。
我检查了“明确的选项”是不是写成“明确的选项”但是根本没有写出
该子是公开的。
我写的办公室是在2016年,另一台PC上的版本是2013年,但我在2016办公室遇到了同样的错误,但对于一些人来说,我不明原因,有时在切换调用子语法之后或重新打开excel文件,错误不再发生或不一致。
有关excel原因的任何建议都会出现以下错误:
在调用sub之后无法运行宏,此宏可能在此工作簿中不可用 或者可以禁用所有宏
?
聚苯乙烯。这是一个分布式自动计算,所以我将无法编辑pc(或excel)设置,弹出窗口是nono:)
问题是在合并vba项目之后,excel将.xlsm文件的引用保留到旧文件夹,即使父.xlsb文件已被复制并移动到其他路径。
该解决方案目前正在验证为:将原始文件移动到新父文件的文件夹中,并将包含实际.xlsm的整个文件夹共享,以便在另一台计算机上运行
答案 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 。