如何使用VBA至少保存一次Excel工作簿,而不是作为尚未保存的新工作簿.我不想检查它当前是否已保存 - 只有单击"保存"才会将文档保存到现有位置或提示我选择保存位置.
我觉得这很有帮助. .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)
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)