You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel 2021新建工作簿VBProject设密后关闭异常的解决方法

解决Excel 2021新建工作簿VBProject密码保存异常问题

问题根源

你遇到的情况是因为代码操作VBProject时对象指向错误——默认操作了当前代码所在的原工作簿,而非新建的目标工作簿,关闭时的保存操作进一步把错误的密码设置同步到了原工作簿。

可行解决办法

  1. 明确指定新建工作簿的VBProject对象
    不要依赖ActiveWorkbook.VBProject来设置密码,直接通过新建工作簿的变量引用其VBProject,避免因工作簿激活状态变化导致对象指向错误。

  2. 提前开启VBA项目对象模型访问权限
    操作VBProject需要Excel信任授权:

    • 打开Excel,依次点击「文件」>「选项」>「信任中心」>「信任中心设置」>「宏设置」
    • 勾选「信任对VBA项目对象模型的访问」,确定后重启Excel生效。

修正后的示例代码

Sub SetNewWorkbookVBPassword()
    Dim newWB As Workbook
    Dim targetVBProj As VBIDE.VBProject
    Dim savePath As String
    
    ' 定义保存路径(自行修改为实际路径)
    savePath = "C:\Users\你的用户名\Desktop\带密码保护的工作簿.xlsm"
    
    ' 新建工作簿
    Set newWB = Workbooks.Add
    
    ' 绑定新建工作簿的VBProject
    Set targetVBProj = newWB.VBProject
    
    ' 设置VBProject保护密码(替换为你的密码)
    targetVBProj.Protect Password:="123456", Locked:=True
    
    ' 保存为启用宏的格式(必须,否则VBProject会丢失)
    newWB.SaveAs Filename:=savePath, FileFormat:=xlOpenXMLWorkbookMacroEnabled
    
    ' 关闭工作簿(已保存过,SaveChanges设为False即可)
    newWB.Close SaveChanges:=False
End Sub

额外注意事项

  • 新建工作簿必须保存为启用宏的格式(.xlsm、.xlsb等),普通.xlsx格式不支持VBProject,密码设置会直接失效。
  • 若必须使用newWB.Close SaveChanges:=True,需确保执行关闭前新建工作簿处于激活状态(可添加newWB.Activate语句),但更稳妥的方式是先显式保存再关闭。

内容的提问来源于stack exchange,提问作者8平民

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 06:04:54