如何解决Personal Macro Workbook中宏复制工作表到Book1时崩溃的问题?
解决Personal Macro Workbook(PMW)中宏复制工作表到Book1的崩溃问题
嘿,这个坑我之前也踩过!把宏放在PMW里确实能随时调用,但这里的关键问题是**ThisWorkbook的指向**——当宏从PMW执行时,ThisWorkbook指的是PMW本身(也就是Personal.xlsb),而不是你打开的默认Book1。原来的Sheet.Copy After:=ThisWorkbook.Sheets(1)相当于试图把工作表复制到PMW里,这直接触发了崩溃。
下面是修改后的代码,核心就是把ThisWorkbook替换成明确指向Book1的引用:
Sub GetSheets() Application.AutoRecover.Enabled = False Dim targetWB As Workbook ' 获取默认的Book1工作簿(如果未保存则名称是"Book1",保存后会带扩展名如"Book1.xlsx") On Error Resume Next Set targetWB = Workbooks("Book1") On Error GoTo 0 ' 先检查Book1是否存在,避免宏直接报错 If targetWB Is Nothing Then MsgBox "默认的Book1工作簿没找到,请先打开它再运行宏!" Exit Sub End If LInput: PL = Application.InputBox("输入你的内容...") ' 这里补全你原来的InputBox完整内容 ' 关键修改:将工作表复制到Book1的第一个工作表之后 Sheet.Copy After:=targetWB.Sheets(1) ' 这里放你原来的其他代码逻辑... ' 记得恢复自动恢复功能 Application.AutoRecover.Enabled = True End Sub
几个小提示:
- 如果你的Book1已经保存并重命名了(比如叫"日常统计.xlsx"),一定要把
Workbooks("Book1")改成对应的文件名。 - 加入错误检查是为了避免用户没打开Book1就运行宏时出现莫名其妙的崩溃,体验更友好。
- 最后务必把
Application.AutoRecover.Enabled改回True,不然会关闭Excel的自动恢复功能,风险很高。
内容的提问来源于stack exchange,提问作者Z Leonhart
相关产品推荐
相关产品推荐

