Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim saveIt As Boolean
If ThisWorkbook.Name = "Test.xlsm" Then
Sheets("Sheet1").Select
If Not IsEmpty(A1.Value) Then
MsgBox "This workbook is 'read only' Please rename this workbook."
strName = "Please enter a new file name."
ThisPAth = Application.ActiveWorkbook.Path
ThisFile = Range("B1").Value
ActiveWorkbook.SaveAs Filename:=ThisPath & ThisFile & ".xlsm", FileFormat:=52, CreateBackup:=False
Else
MsgBox "Cancelled."
End If
End If
End Sub
我有一個密碼保護的工作簿(Test.xlsm),嚴格用於數據輸入當用戶打開工作簿爲只讀時,輸入數據,然後退出工作簿/模板,我想另存爲對話框自動彈出以使Sheet1的A1的內容爲在「SaveAs」框中自動填充的「建議」文件名Autofill只讀Excel 2010 xlsm SaveAs文件名框
我想如果我阻止了BeforeSave函數,我可以聲明這個路徑/文件名,但唉,它不起作用。自動填充框顯示「Copy of Test.xlsm」。我甚至不認爲它看到上述代碼。
如何使用所需的名稱完成自動填充此框。謝謝。
------------更新------------------
重寫了代碼以下,但仍無法在絆住保存時的默認對話框。也許我誤解了Workbook_BeforeSave函數。我認爲只要文件得到保存,就會自動調用它。出於標準化的原因,我從不希望用戶使用名稱Test.xltm(我將文件更改爲模板以查看是否有所作爲)保存文件,而是建議用戶將文件重命名爲B1中的值。代碼不會自動調用。例如,如果我通過從快速訪問工具欄執行宏來調用它,但是似乎無法在用戶選擇「關閉」,「保存」或「另存爲」時自動執行它,從「文件」下拉菜單中選擇。因爲只有通過用戶看了這麼另存爲對話框應該總是在退出時打開/保存/另存爲
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim saveDialog As FileDialog
Debug.Print "Hello"
Set saveDialog = Application.FileDialog(msoFileDialogSaveAs)
If ThisWorkbook.Name = "Test.xltm" Then
Application.EnableEvents = False
Debug.Print "Save as"
Set saveDialog = Application.FileDialog(msoFileDialogSaveAs)
With saveDialog
.InitialFileName = "foo.xlsm"
.Show
End With
Application.EnableEvents = True
Else
Debug.Print "Cancel"
End If
End Sub
模板是密碼保護和打開。正確?在這種情況下Workbook_BeforeSave不應該總是被調用嗎?
修改後的代碼(請參閱上面有關編輯更改和進一步說明的內容),但仍然無法按照我需要的方式工作。 – user12059