![工作簿打开后立即强制“文件另存为”-代码未执行](https://linux22.com/image/1617655/%E5%B7%A5%E4%BD%9C%E7%B0%BF%E6%89%93%E5%BC%80%E5%90%8E%E7%AB%8B%E5%8D%B3%E5%BC%BA%E5%88%B6%E2%80%9C%E6%96%87%E4%BB%B6%E5%8F%A6%E5%AD%98%E4%B8%BA%E2%80%9D-%E4%BB%A3%E7%A0%81%E6%9C%AA%E6%89%A7%E8%A1%8C.png)
我创建了一个 .xlsm wrkbk 模板,其中将下面的代码(h/t mrexcel.com)嵌入在启用宏的模板文件的模块中。
为了防止用户覆盖模板文件,宏应该在文件打开后立即执行,而无需最终用户手动调用子宏。
但代码没有执行。非常感谢您的专业帮助!
工作簿打开时强制“文件另存为”
Private Sub Workbook_Open()
Dim strNewFileName As String
strNewFileName = Application.GetSaveAsFilename(InitialFileName:=ThisWorkbook.Name & " A", FileFilter:="Excel Workbook (*.xls), *.xls", FilterIndex:=1)
IIf strNewFileName = "False" Then
MsgBox "You must save a copy!"
Workbook_Open
Exit Sub
End If
ThisWorkbook.SaveAs Filename:=strNewFileName
End Sub
答案1
听起来你需要做的就是将文件保存为模板
.XLTX
不带( )和带( )宏的模板都.XLTM
无法保存。