关闭并打开工作簿。

3

我需要关闭正在运行宏的工作簿,然后在关闭后重新打开它。

这是一个过程末尾的操作,该过程会更改一些设置值并保存更改后的文件副本。 保存更改后的文件之后,我希望关闭当前工作簿(不保存更改),然后重新打开它,以便可以像更改发生之前那样打开它。

如果有比关闭再打开更好的方法,请告诉我。

这个逻辑需要在工作簿中进行,而不是在工作簿外部的任何地方,例如Personal.xlsm或其他不随工作簿一起传输的位置。

1个回答

5

做类似这样的事情:

dim currentworkbookPath as string
'Store current workbook path to a string
currentworkbookPath = workbook.FullName
'Save the workbook somewhere else
Workbook.SaveAs 'I'll let you figure out the save as details yourself :P 
'Open the old workbook.
Workbooks.Open currentworkbookPath
'Close the saved workbook.
Workbook.Close

如果你正在使用的工作簿是ThisWorkbook,那么你可能希望使用该工作簿,但我不想假设。

如果你不熟悉的话,这里是Workbook.FullName的参考资料。


2
你可以重新打开它,因为你已经将当前文件另存为其他名称。如果你真的想要打开同一个文件两次,你可以创建一个新的 Excel 实例并在其中打开它...虽然它只能是只读的。 - Daniel
1
实际上,我正在使用 wb.SaveCopyAs Newfilename 而不是更改当前文件名。 - GoldBishop
哦...使用SaveAs代替。当您使用SaveAs保存时,要重新打开的文件不再打开,因为打开的版本会被重命名。我们可以绕过它并使用SaveCopyAs,但这需要在打开未编辑版本之前关闭工作簿,这将停止代码并导致工作簿无法打开。 - Daniel
是的,曾经尝试过这样做,但需要保留当前工作簿实例的打开状态。但现在的逻辑已经改变,我需要关闭当前工作簿,然后重新打开它,而不保存任何更改。是否存在任何导致“Workbook_Open”未触发的情况?我将实施“SaveAs”,看看是否会遇到其他问题。 - GoldBishop
已发布,进一步的错误问题请参考:http://stackoverflow.com/questions/13123980/reopen-workbook-results-in-application-defined-or-object-defined - GoldBishop
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接