[英]Autofill Read only Excel 2010 xlsm SaveAs file name box
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“,嚴格用於數據輸入。當用戶以只讀方式打開工作簿,輸入數據,然后退出工作簿/模板時,我想要自動彈出的SaveAs對話框使Sheet1的A1的內容成為在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
模板受密碼保護,並由用戶只讀打開,因此SaveAs對話框應始終在退出/保存/另存為時打開。 正確? 在這種情況下,Workbook_BeforeSave是否應該始終被調用?
例:
Sub saveDialogTest()
Dim saveDialog As FileDialog
Set saveDialog = Application.FileDialog(msoFileDialogSaveAs)
With saveDialog
.InitialFileName = "Foo.xlsx"
.Show
End With
End Sub
如果您使用這樣的FileDialog
,它將允許您更改建議的文件名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.