我是VBA的新手,我正在为老板创建模板。我想强迫用户“另存为”,以便他们不会覆盖模板。换句话说,当弹出“另存为”对话框时,我想禁用“取消”按钮。
这是我的代码:
Dim fPth As Object
Set fPth = Application.FileDialog(msoFileDialogSaveAs)
With fPth
.InitialFileName = CTAPath
.InitialFileName = CTAName & "_CAP DATA"
.Title = "Save with your CTA file"
.InitialView = msoFileDialogViewList
.FilterIndex = 2
If .Show = -1 Then
.Execute
End If
End With
我想在IF语句中创建一个ELSE语句,但我不知道应该是什么。我尝试搜索,但没有提出任何解决方案。
谢谢!
答案 0 :(得分:2)
这不是这样做的方法:如果用户在“另存为”文件列表中选择文件本身,则可能会遇到相同的情况。
我建议您将文件设为只读,这样任何人都无法更改或覆盖它。
答案 1 :(得分:1)
我不确定您是否可以禁用Cancel
按钮,但是有解决方法...
您可以循环.Show
方法,直到用户按下Save
按钮;)
例如:
Sub PreventCancel()
Dim fPth As Object
Set fPth = Application.FileDialog(msoFileDialogSaveAs)
Dim result As Variant
With fPth
.InitialFileName = CTAPath
.InitialFileName = CTAName & "_CAP DATA"
.Title = "Save with your CTA file"
.InitialView = msoFileDialogViewList
.FilterIndex = 2
Do
result = .Show
Loop While result <> True
.Execute
End With
End Sub
[编辑]
我建议您使用Application.GetSaveAsFilename Method (Excel)而不是FileDialog
,因为它可以使您更好地控制它。
请,也请阅读对您的问题的宝贵评论。