【问题标题】:"Cannot run the macro" error after closing and reopening Workbook using macro使用宏关闭并重新打开工作簿后出现“无法运行宏”错误
【发布时间】:2019-06-11 11:47:40
【问题描述】:

所以我写了一段非常简单的代码,基本上可以撤消另一个宏所做的更改。另一个宏保存工作簿,然后将数据复制到另一个工作表并删除原始数据。我编写的“撤消”脚本只是关闭并重新打开工作簿而不保存它 - 我知道这不是万无一失的,但总比没有好。它运行得非常好并且可以执行我想要的操作 - 但是当它重新打开工作簿时,我收到以下警告消息“无法运行宏 'OpenMe'。宏可能在此工作簿中不可用,或者所有宏都可能被禁用。”重新打开后,我所有的宏仍然可以正常工作。这是我的关闭和打开宏的代码:

Sub Yes_Click()

Application.OnTime Now + TimeValue("00:00:01"), "OpenMe"
ThisWorkbook.Close SaveChanges:=False

End Sub

Sub OpenMe()

MsgBox "Changes Undone"

End Sub

Sub No_Click()

Undo.Hide

End Sub

我想要的只是不要弹出这个愚蠢的警告!任何建议表示赞赏:)

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您需要重新打开工作簿,否则您将无法运行任何代码:

    Sub Yes_Click()
    
        Application.OnTime Now + TimeValue("00:00:01"), "OpenMe"
        ThisWorkbook.Close SaveChanges:=False
    
    End Sub
    Sub OpenMe()
    
        Dim wb As Excel.Workbook
        Set wb = ThisWorkbook
    
        Dim pth As String
        pth = wb.FullName
    
        Application.Workbooks.Open pth
        MsgBox "Changes Undone"
    
    End Sub
    Sub No_Click()
    
        Undo.Hide
    
    End Sub
    

    【讨论】:

    • 它已经重新打开了吗?我已经对其进行了测试,它确实关闭并重新打开了以前保存的文件......我的意思是我自己很困惑,但它可以工作
    • 这对我来说是这样的,我每次运行宏来关闭和重新打开工作簿时都会使用此代码。
    • 我试过你的方法 - 仍然收到同样的警告,说它无法运行宏:/
    • 您的工作簿上发生了一些事情,我确实将代码放在工作簿上,删除了工作表,运行 Yes_Click 并重新打开工作簿,工作表仍然存在并且“更改已撤消”消息.
    • 知道它会是什么吗?因为这是我遇到的第一个问题 - 我不明白为什么它能够访问所有其他宏但不能访问 OpenMe() 一个
    【解决方案2】:

    我找到了解决方案 - 我不得不将 OpenMe() 的代码移动到一个单独的模块中,然后一切正常,没有弹出警告:)

    【讨论】:

      猜你喜欢
      • 2016-05-28
      • 1970-01-01
      • 2015-06-02
      • 2018-07-27
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多