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

如何在Book1的宏中执行Book2的任务?已用Application.run未达预期

解决方法

首先你写的Application.Run语法有问题,正确格式应该是Application.Run "'工作簿名.xlsm'!宏名",不过更关键的是——就算语法对了,宏默认还是会基于代码所在的Book1执行,要让它针对Book2操作,得在宏里明确指定操作对象是Book2,而不是依赖默认的ThisWorkbook或ActiveWorkbook。

  • 第一步:修正宏调用的语法(如果需要用Application.Run调用的话)
    正确的调用代码应该是:

    Application.Run "'Book1.xlsm'!Macro1"
    
  • 第二步:修改Book1里的Macro1代码,明确指向Book2操作
    比如你要给Book2的Sheet1单元格写入内容,宏代码改成这样:

    Sub Macro1()
        ' 先确保Book2已经打开,这里直接指定工作簿对象
        Dim targetWB As Workbook
        ' 如果Book2是xlsx后缀就写xlsx,xlsm就写xlsm
        Set targetWB = Workbooks("Book2.xlsx")
        
        ' 对Book2执行具体任务,比如给Sheet1的A1赋值
        targetWB.Sheets("Sheet1").Range("A1").Value = "通过Book1宏操作Book2"
        
        ' 如果需要激活Book2窗口,可加这行(非必须,只要明确对象就能操作)
        ' targetWB.Activate
    End Sub
    
  • 额外提示:如果Book2没打开,要先在宏里打开它,比如:

    Set targetWB = Workbooks.Open("C:\你的文件路径\Book2.xlsx")
    

这样运行宏后,操作就会作用在Book2上,而不是Book1了。

内容的提问来源于stack exchange,提问作者Mahmud Jibril MIAENG GMNSE SMA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:55:01