4

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

基本上,我有这个:

  1. 用户打开 .xls,在某个字段中输入一些数据,然后将 File-->Save As 保存到他们自己的位置
  2. 有时用户会点击保存,因此会覆盖我不希望发生的 .xls。

我一直在研究一些想法,但我不确定如何最好地实施它。我认为当用户第一次打开 .xls 以保存到新位置时提示是最好的方法,但是向前考虑,如果他们已经将文件保存到新位置并决定编辑新位置,我希望他们那时能够“保存”,因为现在它是他们自己的文件,而不是原始文件。

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

谢谢,迈克

4

2 回答 2

6

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

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

在此处输入图像描述

这样,即使用户尝试执行 a Save,Excel 也会自动提示输入Save As

在此处输入图像描述

高温高压

于 2012-05-11T19:47:49.990 回答
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
于 2012-05-11T19:51:24.463 回答