VBA:工作簿。保存并closures不保存

我有下面的代码正在工作,但行.closeclosuresWB而不保存:

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中启用了一些数据保护function,但不允许保存。 尝试做一个这样的最低限度的例子

 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 

然后用F8debugging,看到你得到的消息,一旦你走过owb.Save

只是你知道:

 .Save .Close SaveChanges:=True 

使用.Save行可以使SaveChanges:=True部分无用。 反之亦然。