【问题标题】:VBA - What happens to the Object of a Workbook after Save As?VBA - 另存为后工作簿的对象会发生什么?
【发布时间】:2018-04-23 21:19:48
【问题描述】:

我正在开发一个宏,并且想了解这方面的信息以避免任何错误或崩溃。

场景: 我有一个完成所有处理的文件(宏文件)。我的代码打开一个预先存在的 excel(模板)文件,然后将一些内容写入其中,然后将其另存为特定位置。 对于打开预先存在的文件,我正在使用这个:

Set SOWbk = Workbooks.Open(FileName:=SOFileName, ReadOnly:=True)

为了保存为这个文件,我正在使用这个:

SOWbk.SaveAs FileName:=ThisWorkbook.Path & "\" & TextBox13.Value & "_SO.xlsm", FileFormat:=52

问题: 1. 另存为后,原始文件(模板)是否保持打开状态,我必须关闭它吗? 2、“SOWbk”对象是否自动获取新保存为文件的引用?

我尝试在 Google 和 Stack 上搜索此内容。我没有找到任何帮助。提前谢谢你的帮助!非常感谢。

【问题讨论】:

    标签: excel vba save-as


    【解决方案1】:

    问题 1 的答案:SaveAs 之后旧工作簿是否保持打开状态

    没有。您打开存储在位置 A 中的工作簿 A。当您使用 SaveAs 函数时,您将打开的工作簿的“当前版本”(与位置 A 中存储的不同)保存到位置 B。现在打开的文件就是文件 B。

    问题 2 的答案:Workbook Object 会发生什么

    Object 指的是我所说的 Workbook B。解释同上。打开的工作簿不代表位置 A 中存储的内容。

    【讨论】:

    • 感谢您的回答!这澄清了我的疑问。最后一个查询:在“另存为”之后,Excel 会自动关闭工作簿 A(从您的示例中),例如 Worbook.close?那个文件是完全关闭的吗?
    • 它并没有“关闭”原始工作簿,而是破坏了 excel 应用程序和存储文件之间的链接,有利于创建指向新创建文件的链接。
    • 想象一下:工作簿A 存储在磁盘上。当您打开文件时,A 的临时副本让我们称之为A' 存储在您的 RAM 中。当您现在SaveAs 时,A' 将作为B 存储到磁盘中。 RAM 中的对象没有改变,但它现在被引用到 B
    • @FloLie 我们是否必须使用 .close 手动关闭文件 A?或者它不再需要它并且不会影响我的代码。
    • 您不必关闭文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多