簡體   English   中英

除非手動打開,否則工作簿將無法通過VBA關閉

[英]Workbook will not close with VBA unless opened manually

我有一個使用VBA打開的工作簿,修改了該工作簿,然后關閉了該工作簿。 到目前為止,我所擁有的是:

 Sub OpenandModify()
 application.screenupdating = false
 workbooks.open Filename:="FilePath\WkbkName.xlsm"

*Modify Workbook 


Workbooks("WkbkName.xlsm").close SaveChanges:=True
application.screenupdating = true
End Sub()

如果我在工作簿已經打開的情況下運行該宏,則該宏可以正常工作並關閉上述工作簿。 但是,如果尚未打開工作簿,則文件在修改后仍保持打開狀態(請注意,由於進行了修改,所以我認為Workbook.Open不會出現問題)。 有任何想法嗎?

提前致謝。

在玩完我的工作簿之后。 我似乎已經找到了問題。 在修改代碼部分中,我還有另一個子例程,該子例程從工作簿中添加了與WkbkName.xlsm不同的工作表。 如果工作表已經存在,它將作為Sheet(2)添加,並且工作簿不會關閉。 如果工作表不存在,則該工作簿將打開並正確修改並關閉。 我仍然不明白為什么會這樣,所以如果有人有任何想法,將不勝感激。

現在,我只打算添加一個檢查重復工作表的選項,並在出現這種情況時退出子菜單。

您遇到的某些問題可能是由於代碼與正在使用的工作簿混淆了。

使用變量保存對工作簿的引用,並在整個代碼中僅使用該引用:

 Sub OpenandModify()

    Dim wrkBk As Workbook

    Application.ScreenUpdating = False
    'Open the workbook and assign it to wrkBk variable.
    Set wrkBk = Workbooks.Open(Filename:="FilePath\WkbkName.xlsm")

    'Modify Workbook
    With wrkBk
        .Worksheets("Sheet1").Range("A1") = "Modified!"
    End With

    wrkBk.Close SaveChanges:=True
    Application.ScreenUpdating = True

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM