首页 文章

除非手动打开,否则工作簿不会关闭VBA

提问于
浏览
0

我有一个工作簿,我打开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的问题) . 有任何想法吗?

提前致谢 .

2 回答

  • 0

    用我的工作簿玩了更多 . 我似乎找到了这个问题 . 在修改代码部分,我有另一个子例程,它添加一个不同于WkbkName.xlsm的工作簿的工作表 . 如果工作表已存在,则会将其添加为Sheet(2),并且工作簿将不会关闭 . 如果工作表不存在,则工作簿将打开并正确修改并关闭 . 我仍然不明白为什么它会这样,所以如果有人有任何想法,将不胜感激 .

    现在,我只是计划为重复的工作表添加一个检查,如果发生则退出sub .

  • 0

    您遇到的一些问题可能是由于代码与正在处理的工作簿混淆 .

    使用变量来保存对工作簿的引用,并在整个代码中仅使用它:

    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
    

相关问题