excel - VBA:Workbooks.Save & Close 不保存

标签 excel vba

我有以下代码正在运行,但 .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/

相关文章:

excel - Excel 中的这个表达式是什么意思

vba - 如何从 Excel (VBA) 中的代码设置下拉选择

excel vba根据点值更改数据点的条形图颜色

mysql - 将行从一个链接表插入到另一个链接表

vba - 使用 Vba 迭代数据透视表,同时将单个字段复制到单独的工作表中

java - XSLT 检查字符串是否在集合内

excel - 在字符串 VBA 中搜索数字

java - Apache POI SXSSFWorkbook 在 XLSX 文件内存问题中写入大约 500.000

mysql - 删除重复的字符串列表

arrays - 删除使用 union 以外的一系列行的更快方法