VBA可以确定是否已保存Excel工作簿?

Chr*_*isB 5 excel vba

如何使用VBA至少保存一次Excel工作簿,而不是作为尚未保存的新工作簿.我不想检查它当前是否已保存 - 只有单击"保存"才会将文档保存到现有位置或提示我选择保存位置.

Chr*_*isB 7

我觉得这很有帮助. .BuiltinDocumentProperties("last save time")返回一个vbDate(VarType= 7)表示只保存文件至少一次保存工作簿的最后时间.否则返回a vbObject(VarType= 9).

Function WbSavedAtLeastOnce(ByVal target As Workbook) As Boolean
' Returns TRUE if the target workbook has been saved at least once.

    ' .BuiltinDocumentProperties("last save time") returns a vbDate
    '   only if the file has been saved at least once.
    WbSavedAtLeastOnce = VarType( _
            target.BuiltinDocumentProperties("last save time")) = 7
End Function
Run Code Online (Sandbox Code Playgroud)

使用这样的功能:

Sub Test()
    Dim wb As Workbook
    Set wb = ActiveWorkbook

    If WasSavedAtLeastOnce(wb) = True Then
        MsgBox "This file has been saved at least once."
    Else
        MsgBox "This file has never been saved."
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)


小智 7

名称(例如Book1)是一个线索,虽然我想有些人可以简单地用这个名字保存他们的工作簿.

更清晰的检查可能与仅适用于已保存工作簿的工作表函数一样简单.

'the following returns an empty string if used on an unsaved workbook
=CELL("filename", A1)
Run Code Online (Sandbox Code Playgroud)

在VBA中,与External:= True参数一起使用时,.Address属性将不返回任何路径.

?range("A1").Address(external:=true)
[Book1]Sheet5!$A$1
Run Code Online (Sandbox Code Playgroud)


Jal*_*lal 7

If ActiveWorkbook.Path = vbNullString Then
    'actions if the active workbook hasn't been saved yet go here
Else
    '....
End If
Run Code Online (Sandbox Code Playgroud)