VBA可以确定是否曾经保存过Excel工作簿吗?

时间:2018-07-26 02:52:41

标签: excel vba excel-vba

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

3 个答案:

答案 0 :(得分:7)

我发现这很有帮助。 .BuiltinDocumentProperties("last save time")返回一个vbDateVarType = 7),表示仅在文件已保存至少一次的情况下最后一次保存工作簿。否则,它将返回vbObjectVarType = 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

使用如下功能:

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

答案 1 :(得分:7)

名称(例如Book1)是一个线索,尽管我认为有人可以简单地用该名称保存他们的工作簿。

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

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

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

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

答案 2 :(得分:2)

$lastcomment = end($comments);
echo $lastcomment->comment_content . '<br />';