如何在执行包含VBAmacros时重新打开Excel工作簿?

我在我的Excel文件上做了各种各样的事情,最后我需要回到最后保存的版本。 所以我closures并重新打开我的Excel文件而不保存,这是有效的。 在closures工作簿之前,我已经复制了一些单元格(通过使用一些sorting和过滤以及其他东西创build的),现在我需要将它们重新打开时粘贴到文件的末尾。

但是,当我们重新打开工作簿时,以前运行的macros不会继续停止。 我想运行macros再次打开时停止的macros。 那可能吗?

那么我的想法是在工作簿打开时放这个代码:

sub Auto_open() sheet1.activate ' and select the last row of the sheet1 activesheet.paste end sub 

因为当工作簿重新打开时,它会自动执行这个子程序并复制单元格的内容。 但缺点是我们不能说它的单元格总是被复制,因为如果用户将一些数据复制到剪贴板,然后打开这个文件,由于Auto_open子将它复制到表尾,但这不是什么我想要。

任何人都可以提出一个好主意来克服这个问题?

为什么不暂时保存你的修改工作簿在不同的文件名下? 然后可以保持打开状态,重新打开原始工作簿,并打开两个工作簿进行复制。 最后,如果您觉得如此倾向,请删除修改后的工作簿。

这个使用_Open事件的业务只是要求发生灾难。

此外, .Copy是一个非常容易出错的方法,因为它使用剪贴板,其他应用程序也可以访问剪贴板,两端都有不可预知的结果。 我从来没有单独使用.Copy ,但有时使用.Copy Destination:=...这是安全的。 但主要是,我做这样的事情:

 wbkTwo.Sheets("Sheet1").Range("A1:B5") = _ wbkOne.Sheets("Sheet1").Range("A1:B5")