Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel &引用;无法运行宏";使用宏关闭并重新打开工作簿后出错_Excel_Vba - Fatal编程技术网

Excel &引用;无法运行宏";使用宏关闭并重新打开工作簿后出错

Excel &引用;无法运行宏";使用宏关闭并重新打开工作簿后出错,excel,vba,Excel,Vba,因此,我编写了一段非常简单的代码,基本上可以撤消另一个宏所做的更改。另一个宏保存工作簿,然后将数据复制到另一个工作表并删除原始数据。我编写的“撤销”脚本只是关闭并重新打开工作簿而不保存它——我知道这不是傻瓜式的,但总比什么都没有好。它运行得非常好,可以执行我想要的操作-但是当它重新打开工作簿时,我会收到以下警告消息“无法运行宏“OpenMe”。该宏可能在此工作簿中不可用,或者所有宏都可能被禁用。重新打开后,我的所有宏仍然可以正常工作。以下是我为close和open宏编写的代码: Sub Yes_

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

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

我只希望这个愚蠢的警告不要突然出现!感谢您的建议:)

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

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

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

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

我找到了解决方案-我必须将OpenMe()的代码移动到一个单独的模块,然后它在没有弹出警告的情况下工作:)

我找到了解决方案-我必须将OpenMe()的代码移动到一个单独的模块,然后它在没有弹出警告的情况下工作:)

它已经重新打开了吗?我已经测试过了,它确实关闭并重新打开了以前保存的文件。。。我的意思是,我自己也很困惑,但它对我来说就是这样,每次我运行宏来关闭和重新打开工作簿时,我都会使用此代码。我尝试了您的方法-仍然收到相同的警告,说它无法运行宏:/n您的工作簿上出现了一些问题,我确实将代码放在了工作簿上,删除了一张工作表,运行
Yes\u单击
,工作簿重新打开,工作表仍然在那里,并显示“Changes Undone”(更改撤消)消息。您知道会是什么吗?因为这是我遇到的第一个问题-我不明白为什么它可以访问所有其他宏,但不能访问OpenMe()宏,尽管它已经重新打开了?我已经测试过了,它确实关闭并重新打开了以前保存的文件。。。我的意思是,我自己也很困惑,但它对我来说就是这样,每次我运行宏来关闭和重新打开工作簿时,我都会使用此代码。我尝试了您的方法-仍然收到相同的警告,说它无法运行宏:/n您的工作簿上出现了一些问题,我确实将代码放在了工作簿上,删除了一张工作表,运行
Yes\u单击
,工作簿重新打开,工作表仍然在那里,并显示“Changes Undone”(更改撤消)消息。您知道会是什么吗?因为这是我遇到的第一个问题-我不明白为什么它可以访问所有其他宏,但不能访问OpenMe()宏