我创建了一个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作为文件名。我尝试过的所有代码都不能正常工作,或者最可能的是我复制错误/输入的错误信息,根本不理解它。
答案 0 :(得分:0)
关于使用单元格中的名称保存文件的部分,您可以执行类似以下操作:
Sub SaveAsCell()
Dim strName As String
strName = Sheet1.Range("A1")
ActiveWorkbook.SaveAs strName
Exit Sub
(来自OZGrid.com)
另外,查看代码,每次保存的原因是因为每次打开工作簿时都要保存它。也许将ActiveWorkbook.Save
部分移动到另一个宏。
答案 1 :(得分:0)
此代码有助于禁用“保存”命令(不执行任何操作):
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中测试过它。