2016-04-19 84 views
1

首先,這不是關於saveasfilename對話框。檢查「更改保存到‘文件名’提示瓦特/ VBA?

有沒有一種方法來設置一個標誌,檢查,看看是否」想保存對'filename.xsls'的更改?對話框出現在VBA子?

基本上我有一個宏將一些數據複製到另一個文件,顯示一個MsgBox然後關閉該文件,Excel應該提示用戶確認該文件已保存。但是,我有一個傳統程序有時會鎖定該文件,導致提示不出現,並且看起來文件已保存,但實際上並未保存。爲了「修復」它,我必須關閉Excel和程序的所有實例並重新開始。它不會經常發生,但如果您不注意,或者在過程中經驗不足的人不知道檢查以確保他們被提示保存,則可能會錯過。

我想知道的是,如果有一種方法來檢查/標誌值,1/0,true/false等,以確保出現對話框。如果沒有,那麼警告用戶他們需要重新啓動Excel和其他程序。基本上我試圖捕捉一個不應該發生的錯誤,所以這可能是無法解決的。

這是對話框我指的是:

Excel save changes dialog

有時會因爲文件被鎖定和VBA子只是繼續它不會出現。

+0

如果子有'Application.DisplayAlerts = FALSE'那麼這將抑制任何這樣的消息框。 – BruceWayne

+0

我沒有任何這種類型的代碼。該對話框應始終顯示,除了傳統程序鎖定文件的罕見實例外。代碼只是「ExportDestFile.Close」 – purplefolder

+1

是否有一個原因,你只是關閉文件,而不是使用'Workbook.Save'或'Workbook.SaveAs'?或者至少可以通過'Workbook.Close'實現?例如,「Workbook.Close True」將保存更改,然後關閉工作簿。恕我直言,最好儘可能明確。 – Soulfire

回答

0

它可能會更好地解決其他問題,但由於您沒有發佈它,我們不知道它。 反正你想要的一切在這裏描述:https://support.microsoft.com/en-us/kb/213428

您可以bascally做到這一點:

Sub Auto_Close() 
If ThisWorkbook.Saved = False Then 
    'ThisWorkbook.Save this would autosave 
    Application.GetSaveAsFilename 'this displays the save as dialog 
End If 
End Sub 
+0

第一個該帖子的句子說,它不是關於'GetSaveAsFilename'框。 – Soulfire

+0

我看到這可能會有幫助,但它可能並不重要,因爲該文件不會保存 - 我不知道它將如何處理鎖定的文件,但我可以稍後再試。我明白你在想什麼。 – purplefolder

+0

@Soulfire這裏的重要部分是'如果ThisWorkbook.Saved'這正是(我認爲)OP需要什麼。 –

0

我落得這樣做這是一個解決辦法,雖然我懷疑有它不是真正的我的問題的解決方案必須通過窗口類檢查或其他方式來完成。感謝所有花時間留言並提供他們的智慧的人們:)

我在子運行之前和之後爲文件大小聲明瞭兩個變量。如果文件大小相同,則出現一個msgbox並表示該文件可能沒有被正確寫入,或者您正在覆蓋現有文件。

Dim ExportFileByte As Long 
Dim ExportBytePostFile As Long 

ExportFileByte = FileLen(ExportSourcePath) 

「(子在這裏運行,並部分出口數據拷貝到一個.xls文件)

ExportBytePostFile = FileLen(ExportSourcePath) 
If ExportFileByte = ExportBytePostFile Then MsgBox ("Error: File may have not have saved, or file is being overwritten without changes (OK)")