我有一个用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的问题)。有任何想法吗?
提前致谢。
答案 0 :(得分:0)
在我的工作簿上玩了更多。我似乎找到了这个问题。在修改代码部分,我有另一个子例程,它添加一个不同于WkbkName.xlsm的工作簿的工作表。如果工作表已存在,则会将其添加为Sheet(2),并且工作簿将不会关闭。如果工作表不存在,则工作簿将打开并正确修改并关闭。我仍然不明白为什么它会这样,所以如果有人有任何想法,将不胜感激。
现在,我只是计划为重复的工作表添加一个检查,如果发生则退出子。
答案 1 :(得分: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