You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无链接调用其他工作簿宏触发‘expected sub/function’错误求协助

解决VBA中Application.Run触发"expected sub/function"错误的问题

嘿,我来帮你搞定这个报错!你遇到的「expected sub/function」错误,通常是调用宏时的几个细节没处理好,咱们一个个排查:

1. 最常见的原因:目标工作簿没打开

你的代码直接调用了宏,但如果6wk File to Run.xlsm没在当前Excel实例中打开,Application.Run根本找不到这个宏,自然会报错。咱们先把工作簿打开逻辑补上:

修改后的代码如下:

Sub practice()
    Const folderPath As String = "I:\Ben\New Stores\Reports"
    Const targetWBName As String = "6wk File to Run.xlsm"
    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
    Dim targetWBPath As String
    Dim targetWB As Workbook
    
    ' 拼接完整的工作簿路径
    targetWBPath = fso.BuildPath(folderPath, targetWBName)
    
    ' 先检查工作簿是否已经打开
    On Error Resume Next
    Set targetWB = Workbooks(targetWBName)
    On Error GoTo 0
    
    ' 如果没打开,就打开它
    If targetWB Is Nothing Then
        Set targetWB = Workbooks.Open(targetWBPath)
    End If
    
    ' 再调用宏
    Application.Run "'" & targetWBName & "'!button2_click"
End Sub

2. 宏的可见性或名称有问题

  • 确认button2_click是公共Sub:如果这个宏是用Private Sub button2_click()定义的,外部代码根本调用不到,得改成Public Sub button2_click()。
  • 核对宏名称拼写:虽然VBA不区分大小写,但最好确保和目标工作簿里的宏名称完全一致,别打错字。

3. 宏在工作表模块里?要加工作表名

如果button2_click是写在某个工作表的模块里(比如Sheet1的代码窗口),调用时必须加上工作表名称,格式是:

Application.Run "'6wk File to Run.xlsm'!Sheet1.button2_click"

把Sheet1换成实际的工作表名称就行。

先按这几个步骤排查,应该就能解决问题啦!

内容的提问来源于stack exchange,提问作者The Dude MAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:38:38