确定一个Excel工作簿曾经被保存?

问题描述 投票:5回答:3

我怎样才能知道,使用VBA,如果一个Excel工作簿曾经被保存?

我想知道,如果点击保存将文档保存到一个现有的位置或提示我选择保存位置。

excel vba excel-vba
3个回答
2
投票
If ActiveWorkbook.Path = vbNullString Then
    'actions if the active workbook hasn't been saved yet go here
Else
    '....
End If

7
投票

名字(如第一册)是一个线索,尽管我认为someon可以简单地挽救他们的工作簿使用该名称。

更明确的检查可以是一个工作表函数,仅适用于一个工作簿保存一样简单。

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

在VBA与外部使用时。地址属性将返回没有路径:= True参数。

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

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
© www.soinside.com 2019 - 2024. All rights reserved.