强制另存为,MS Excel VBA

我在MS Office产品中使用了VBA。 我一直在寻找一些代码,强制用户将“另存为”一个.xls文件作为模板使用(但它不是实际的模板文件types)

基本上,我有这样的:

  1. 用户打开.xls,将某些数据input到某个字段,然后select“文件” – >“另存为”到自己的位置
  2. 有时用户点击保存,因此覆盖了我不想发生的.xls。

我一直在寻找一些想法,但我不知道如何最好地实施它。 当用户第一次打开.xls保存到一个新的位置时,我想一个提示是最好的方法,但是,如果他们已经将文件保存到一个新的位置并决定编辑新的位置,我想他们能够'保存'在这一点上,因为现在是他们自己的文件,而不是原来的。

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

谢谢,迈克

我用作模板(但它不是一个实际的模板文件types)

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

在这里输入图像说明

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

在这里输入图像说明

HTH

我同意其他人认为模板和只读是更好的select,但如果你开始自己动手,那么下面是一个例子,让你开始。 它放在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