强制另存为,MS Excel VBA

时间:2012-05-11 16:46:33

标签: excel vba

我在MS Office产品中对VBA有点新意。我一直在寻找一些代码,这些代码会强制用户“另存为”我用作模板的.xls文件(但它不是实际的模板文件类型)

基本上,我有这个:

  1. 用户打开.xls,将某些数据输入某个字段,然后输入文件 - >另存为自己的位置
  2. 有时用户点击保存,因此会覆盖我不想发生的.xls。
  3. 我一直在研究一些想法,但我不确定如何最好地实现它。我认为当用户首次打开.xls以保存到新位置时的提示是最好的方法,但是如果他们已经将文件保存到新位置并决定编辑新位置,我想要他们能够在那时'保存',因为现在它是他们自己的文件,而不是原始文件。

    如果有人能指出我正确的方向或发现我的逻辑缺陷,我很乐意听到。

    谢谢, 麦克

2 个答案:

答案 0 :(得分:6)

  

我用作模板(但它不是实际的模板文件类型)

最简单的方法是将Read-Only Recommended设置为true来保存文件。查看快照

enter image description here

即使用户尝试执行Save,Excel会自动提示Save As

enter image description here

HTH

答案 1 :(得分:4)

我同意其他人的看法,模板和只读是更好的选择,但如果你自己开始滚动,这里有一个让你入门的例子。它进入ThisWorkbook模块

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Dim sNewName As String

    Cancel = True 'Cancel the save operation

    sNewName = Application.GetSaveAsFilename(Replace(Me.Name, ".xls", "1.xls"))

    If sNewName <> Me.FullName And sNewName <> "False" Then
        Application.EnableEvents = False
            Me.SaveAs sNewName
        Application.EnableEvents = True
    End If

End Sub