之前,我創建了一個用戶表單,將打開一個Excel文件打開&隱藏Excel中。當關閉用戶表單時將關閉excel文件保存&。但是,有兩種類型的Excel文件用戶。檢查文件夾權限保存VBA
- 編輯 - 這些誰是數據輸入到文件
- 觀衆 - 那些誰正在查看的文件。
具有excel文件的文件夾只允許「編輯」保存。 (其他人沒有寫權限)。因此,如果用戶對文件夾沒有權限,我必須避免保存部分。有任何想法嗎?我的用戶表單關閉事件的代碼就在這裏。
Private Sub UserForm_QueryClose (Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
If ws.AutoFilterMode Then ws.AutoFilterMode = False
ws.Columns("F:H").Copy
ws.Activate
ws.Range("F1").Select
Application.DisplayAlerts = False
Selection.PasteSpecial Paste:=xlPasteValues
Application.DisplayAlerts = True
Application.CutCopyMode = False
Application.Visible = True
ActiveWorkbook.CheckCompatibility = False
ThisWorkbook.Close savechanges:=True
ActiveWorkbook.CheckCompatibility = True
End If
End Sub
Ws表示工作表的聲明名稱。
編輯
我試圖&找到克服這種情況的替代方法。但是,這不是解決方案&是一種骯髒的方法來獲得結果。請參閱下面的代碼。
Private Sub UserForm_QueryClose (Cancel As Integer, CloseMode As Integer)
On Error Resume Next
If CloseMode = vbFormControlMenu Then
If ws.AutoFilterMode Then ws.AutoFilterMode = False
ws.Columns("F:H").Copy
ws.Activate
ws.Range("F1").Select
Application.DisplayAlerts = False
Selection.PasteSpecial Paste:=xlPasteValues
Application.DisplayAlerts = True
Application.CutCopyMode = False
Application.Visible = True
ActiveWorkbook.CheckCompatibility = False
ThisWorkbook.Save
ThisWorkbook.Close savechanges:=False
ActiveWorkbook.CheckCompatibility = True
End If
End Sub
在上面的代碼我以 on error resume next
跟蹤期間觀衆&跳轉到下一條線的保存過程中產生的錯誤。
您使用的'上的錯誤恢復Next'是一個嚴重的誤解它的宗旨。您應該通過測試錯誤編號並使用該信息來決定下一個操作,從而在代碼中正確處理錯誤。將此作爲答案對試圖學習VBA的任何人都沒有幫助 – 2014-12-04 08:58:29
感謝您的寶貴意見。我知道這不是解決問題的辦法。因此我刪除了單詞「解決方案」並在帖子中增加了「另一種方法」。此外,我認爲,直到我從專家那裏得到一些幫助,這可以避免我的問題。我在想爲用戶查找文件夾權限,然後保存或避免保存是最好的方法。但是,我無法找到這樣的檢查。 – Keashan 2014-12-04 11:10:02