我有以下代码正在运行,但 .close 行关闭 WB 而不保存:
Option Explicit
Public Function updateStatus(fpath As String, fname As String, num As String)
Dim wk As String, yr As String
Dim owb As Workbook
Dim trow As Variant
With Application
.DisplayAlerts = False
.ScreenUpdating = False
.EnableEvents = False
End With
Set owb = Application.Workbooks.Open(fpath & fname)
trow = owb.Sheets(1).Range("Change" & num).Row
owb.Sheets(1).Cells(trow, 5).value = "Test"
With owb
.Save
.Close SaveChanges:=True 'This line doesn't seem to work
End With
With Application
.DisplayAlerts = True
.ScreenUpdating = True
.EnableEvents = True
End With
End Function
如果我删除这条线,WB 会保持打开状态,我会看到变化。如果我添加该行并打开特定文件,我看不到任何变化。
最佳答案
正如评论中提到的,代码看起来不错,您可能在 Excel 上启用了一些数据保护,这不允许保存。尝试制作 最小示例 像这样:
Option Explicit
Public Sub TestMe()
Dim owb As Workbook
Set owb = Application.Workbooks.Open("C:\Users\vityata\Desktop\Testing.xlsx")
owb.Save
owb.Close
End Sub
然后使用
F8
进行调试看看你收到的消息,一旦你经过owb.Save
.只是你知道:
.Save
.Close SaveChanges:=True
与
.Save
您制作 SaveChanges:=True
的行部分没用。反之亦然。
关于excel - VBA:Workbooks.Save & Close 不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45183624/