如何在执行Excel工作簿包含的VBA宏时重新打开该工作簿?

如何在执行Excel工作簿包含的VBA宏时重新打开该工作簿?,vba,excel,excel-2007,Vba,Excel,Excel 2007,我已经在我的excel文件上做了各种各样的事情,最后我需要返回到上次保存的版本。因此,我关闭并重新打开我的excel文件而不保存,这是可行的。在关闭工作簿之前,我已经复制了一系列单元格(通过使用一些排序、过滤等创建),现在我需要在重新打开时将它们粘贴到文件的末尾 但是,当我们重新打开工作簿时,先前运行的宏不会在停止的位置继续。我想在宏重新打开时停止的位置运行宏。可能吗 我的想法是在工作簿打开时输入以下代码: sub Auto_open() sheet1.activate

我已经在我的excel文件上做了各种各样的事情,最后我需要返回到上次保存的版本。因此,我关闭并重新打开我的excel文件而不保存,这是可行的。在关闭工作簿之前,我已经复制了一系列单元格(通过使用一些排序、过滤等创建),现在我需要在重新打开时将它们粘贴到文件的末尾

但是,当我们重新打开工作簿时,先前运行的宏不会在停止的位置继续。我想在宏重新打开时停止的位置运行宏。可能吗

我的想法是在工作簿打开时输入以下代码:

     sub Auto_open()
     sheet1.activate
     ' and select the last row of the sheet1
     activesheet.paste
     end sub
因为当工作簿重新打开时,它会自动执行此子例程并复制单元格内容。但缺点是我们不能说它的单元格总是被复制,因为如果用户将一些数据复制到剪贴板,然后由于自动打开子文件而打开此文件,它会将数据复制到工作表的末尾,但这不是我想要的


有人能提出解决这个问题的好办法吗?

为什么不暂时
。将修改过的工作簿另存为另一个文件名?然后,您可以将其保持打开状态,重新打开原始工作簿,并在两个工作簿都打开的情况下进行复制。最后,如果您愿意,请删除修改后的工作簿

使用
\u Open
事件的业务只是要求灾难发生

另外,
.Copy
是一种非常容易出错的方法,因为它使用剪贴板,其他应用程序也可以访问剪贴板,并且两端都有不可预测的结果。我从不单独使用
.Copy
,但有时使用
。Copy Destination:=…
,这是安全的。但大多数情况下,我会这样做:

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

你能用宏在另一个工作簿中完成这一切吗?也就是说,工作簿A包含一个宏,可以关闭并重新打开工作簿B(包含您的所有数据)?