【问题标题】:Excel VBA script to save then disable *Update*Excel VBA 脚本保存然后禁用 *更新*
【发布时间】:2015-07-30 21:43:51
【问题描述】:

我创建了一个 Excel 电子表格用作文档模板。除了需要输入信息的单元格外,我已锁定工作簿以防被更改。然后我添加了一个 vba 脚本,每次打开文件时都会计数,密码保护被解锁,然后 vba 脚本更新并再次启用密码保护。这是为了我公司自己的内部文件跟踪。我遇到的问题是在执行 vba 脚本后立即自动保存文件,然后让另一个 vba 脚本禁用保存功能,只允许另存为功能。我不希望文件被意外覆盖。

我还想要一个 vba 脚本在文件旁边放置一个命令按钮,该按钮可以使用标准 excel 格式另存为,并在可能的情况下使用单元格数据作为文件名。

这是我到目前为止所拥有的,我对此很陌生。

Private Sub Workbook_Open()
ActiveSheet.Unprotect Password:="PassWord"

    Sheets(1).[I9] = Sheets(1).[I9] + 1

ActiveSheet.Protect Password:="PassWord"

ActiveWorkbook.Save

End Sub

提前感谢您的宝贵时间。

更新

这是我目前的代码

Private Sub Workbook_Open()

ActiveSheet.Unprotect Password:="PassWord"

    Sheets(1).[I9] = Sheets(1).[I9] + 1

ActiveSheet.Protect Password:="PassWord"

Application.DisplayAlerts = False

    ChDir "C:\Users\BlahBlah\Desktop"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\BlahBlah\Desktop\Quote Detail Log Proto.xltm", FileFormat:= _
        xlOpenXMLTemplateMacroEnabled, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False

Application.DisplayAlerts = True

End Sub

现在的问题是,当使用保存按钮或 Ctrl+S 时,它只是再次保存覆盖,即使它是模板格式,并且应该弹出一个另存为框。

我的另一个障碍是命令按钮“另存为”,使用单元格 A1、G9 和 I9 作为文件名。我尝试过的所有代码都不起作用,或者很可能我复制了错误/输入了错误的信息并且根本不理解它。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    关于使用单元格名称保存文件的部分,您可以执行类似的操作:

    Sub SaveAsCell()
    
    Dim strName As String
    
        strName = Sheet1.Range("A1")
    
        ActiveWorkbook.SaveAs strName
    
    Exit Sub
    

    (来自OZGrid.com

    另外,查看您的代码,它每次都保存的原因是因为您告诉它每次打开工作簿时都保存。也许将ActiveWorkbook.Save 部分移动到另一个宏。

    【讨论】:

    • 我认为这很好,他希望每次打开文件时计数器都会增加。
    • 好吧,我实际上需要它在我的计数器更新后自动保存。但我想我解决了这个问题,我把它做成了只允许另存为的模板。所以我这样做并运行了一个宏来自动保存为原始文件,直到我弹出一个询问我是否要保存它我想要的它。如何阻止它弹出?
    • 如果没有看到您的代码,请尝试在“保存”行之前和之后添加此代码:Application.DisplayAlerts = False,然后是 Application.DisplayAlerts = True。如果还是不行,你能用你现在使用的代码更新你的 OP 吗?
    【解决方案2】:

    此代码有助于禁用保存命令(只是什么都不做):

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI = False Then
    Cancel = True
    
    End If
    End Sub
    

    来源:http://www.mrexcel.com/forum/excel-questions/22345-disable-%22save%22-option-file-menu.html

    我不知道这是否是你要找的。似乎(当我刚刚测试这个时)这个解决方案存在一个缺陷:仍然可以“另存为”,然后选择现有文件:-) 我已经在 Excel 2010 中对其进行了测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      • 2013-09-05
      • 2015-11-14
      相关资源
      最近更新 更多