2015-05-08 48 views
3
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不應該總是被調用嗎?

回答

0

例子:

Sub saveDialogTest() 
    Dim saveDialog As FileDialog 

    Set saveDialog = Application.FileDialog(msoFileDialogSaveAs) 

    With saveDialog 
     .InitialFileName = "Foo.xlsx" 
     .Show 
    End With 
End Sub 

如果使用FileDialog這個樣子,這將允許您更改建議的文件名。

+0

修改後的代碼(請參閱上面有關編輯更改和進一步說明的內容),但仍然無法按照我需要的方式工作。 – user12059