Note: The other languages of the website are Google-translated. Back to English

如何强制用户另存为启用宏的工作簿?

当您保存Excel工作簿时,默认情况下它将保存为xlsx文件格式,并且如果有多个代码,则该文件格式将摆脱工作簿中的宏代码。 若要保留代码,您应将工作簿另存为Excel Macro-Enable Workbook格式。 您如何强迫用户另存为启用宏的工作簿?

强制用户使用VBA代码另存为启用宏的工作簿


箭头蓝色右气泡 强制用户使用VBA代码另存为启用宏的工作簿

要将工作簿默认保存为启用宏的工作簿,以下VBA代码可能会为您提供帮助:

1。 按住 ALT + F11 键打开 Microsoft Visual Basic应用程序 窗口。

2。 然后双击 的ThisWorkbook 在下面 VBA项目 部分打开一个新的空白模块,然后将以下代码复制并粘贴到该模块中:

VBA代码:默认情况下,强制将工作簿另存为启用了宏的工作簿:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Updateby Extendoffice
Dim xFileName As String
If SaveAsUI <> False Then
    Cancel = True
    xFileName = Application.GetSaveAsFilename(, "Excel Macro-Enabled Workbook (*.xlsm), *.xlsm", , "Save As xlsm file")
    If xFileName <> "False" Then
      Application.EnableEvents = False
      ActiveWorkbook.SaveAs Filename:=xFileName, FileFormat:=xlOpenXMLWorkbookMacroEnabled
      Application.EnableEvents = True
    Else
      MsgBox "Action Cancelled"
      Cancel = True
      Exit Sub
    End If
End If
End Sub

doc强制另存为xlsm 1

3. 然后保存并关闭此代码窗口,从现在开始,当用户另存为该工作簿时,它将另存为 Excel启用宏的工作簿 默认格式为以下屏幕截图:

doc强制另存为xlsm 2


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (11)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
这非常有用,而且很有魅力,谢谢:)
该评论由网站上的主持人最小化
为我节省了很多痛苦-非常感谢
该评论由网站上的主持人最小化
好一个!

省了我很多头疼! :)
该评论由网站上的主持人最小化
我正在使用 Excel 2016 for Mac,当我使用此 VBA 代码实现“强制另存为 .xlsm”时,出现以下错误:

运行时错误“1004”:

对象“_Application”的方法“GetSaveAsFilename”失败

有人可以针对此错误提供任何指导,以及我可能需要如何调整代码以在 Mac 版本的 Excel 上工作,我们将不胜感激!
该评论由网站上的主持人最小化
fileformat: =52 与制作启用宏的工作簿一样好。 fileformat:=51 是普通工作簿。
该评论由网站上的主持人最小化
不断收到 1004 错误。
将 Off365 2016 用于 MAC。 有解决方案吗?
该评论由网站上的主持人最小化
你好,乔纳森,
此代码在 Windows Office 中运行良好,但未在 MAC 中测试。
您应该搜索在 MAC 中工作的代码。
谢谢!
该评论由网站上的主持人最小化
在模板文件中拥有此 VBA 的任何方式
该评论由网站上的主持人最小化
有什么方法可以在一个真正的模板文件类型的文件中拥有这个 VBA?
该评论由网站上的主持人最小化
当你准备好创建模板时,我相信你必须使用即时窗口来运行
ActiveWorkbook.SaveAs Filename:="ENTER YOUR TEMPLATE NAME", FileFormat:=xlOpenXMLTemplateMacroEnabled
该评论由网站上的主持人最小化
强制用户以 .xlsm 文件格式保存的 VBA 代码对我来说效果很好。 我一直在寻找这个解决方案很长一段时间。 非常感谢您的帮助!
这里还没有评论

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护