如何在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
相关产品推荐
相关产品推荐

