Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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_Excel 2010_Vba - Fatal编程技术网

Excel 关闭然后打开工作簿

Excel 关闭然后打开工作簿,excel,excel-2010,vba,Excel,Excel 2010,Vba,我需要关闭有宏的工作簿,然后在关闭后重新打开 在流程结束时,对某些设置值进行各种更改,然后保存更改文件的副本。保存更改的文件后,我想关闭当前工作簿(不保存更改),然后打开它,这样我就可以像更改发生前一样打开它 如果有比先关后开更好的方法,我一定会接受你的建议 此逻辑需要发生在工作簿中,而不是工作工作簿之外的任何地方,即没有Personal.xlsm或其他不会随工作簿移动的Personal method位置。执行以下操作: dim currentworkbookPath as string 'St

我需要关闭有宏的工作簿,然后在关闭后重新打开

在流程结束时,对某些设置值进行各种更改,然后保存更改文件的副本。保存更改的文件后,我想关闭当前工作簿(不保存更改),然后打开它,这样我就可以像更改发生前一样打开它

如果有比先关后开更好的方法,我一定会接受你的建议


此逻辑需要发生在工作簿中,而不是工作工作簿之外的任何地方,即没有Personal.xlsm或其他不会随工作簿移动的Personal method位置。

执行以下操作:

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
如果工作簿是您正在使用的实际工作簿,您可能会想使用
thiswoolk
,但我不想假设


如果您不熟悉此处,请参阅

的参考资料。我不确定是否可以在关闭同一文件之前打开它……我会尝试一下,看看会发生什么。毫无疑问,眼见为实。您可以重新打开它,因为您已通过将当前文件另存为其他文件来重命名它。如果你真的想打开同一个文件两次,你可以创建一个新的Excel实例,并在其中打开它。。。尽管它必须是只读的。如果工作簿上的某些
Volatile
单元格未更新,则会出现问题。\u最终在我收到打开已打开文件的警报之后。有没有办法将文件延迟到关闭后再打开?实际上我使用的是
wb.SaveCopyAs Newfilename
而不是更改当前文件名。哦。。。改用SaveAs。使用“另存为”保存时,要重新打开的文件将不再打开,因为打开的版本将被重命名。我们可以解决这个问题并使用SaveCopyAs,这将要求在打开未编辑版本之前关闭工作簿,这将停止代码并导致工作簿无法打开。