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

如何通过Excel VBA实现打开带密码的ThisWorkbook时不弹提示

解决Excel加密工作簿自动输入密码不弹窗的问题

原代码的问题

你的代码逻辑存在根本性错误:

  • Workbook_Open事件是工作簿成功打开后才触发的,这时候密码输入提示早已经出现过了,根本无法提前拦截。
  • 代码里重复打开当前工作簿,还会造成不必要的文件重复加载,甚至触发循环打开的问题。

正确实现方案

由于加密工作簿的密码验证流程在VBA事件之前,无法直接在自身的VBA代码里实现自动输密码,需要借助一个辅助启动工作簿来完成:

  1. 创建一个新的空白工作簿,保存为「启动器.xlsm」(必须启用宏)
  2. 在这个启动器的ThisWorkbook模块中添加以下代码:
Private Sub Workbook_Open()
    ' 关闭启动器自身的显示,避免干扰
    ThisWorkbook.Windows(1).Visible = False
    
    ' 自动打开目标加密工作簿,传入密码
    Dim targetPath As String
    ' 替换成你的加密工作簿的完整路径,比如"C:\Users\XXX\Desktop\加密文件.xlsx"
    targetPath = "你的加密工作簿完整路径"
    
    Application.DisplayAlerts = False
    Workbooks.Open Filename:=targetPath, Password:="1234", WriteResPassword:=""
    Application.DisplayAlerts = True
    
    ' 关闭启动器工作簿
    ThisWorkbook.Close SaveChanges:=False
End Sub
  1. 启动方式(二选一):
    • 直接双击「启动器.xlsm」,即可自动打开目标加密文件且不弹出密码提示。
    • 把「启动器.xlsm」放到Excel自动启动文件夹(一般是C:\Users\你的用户名\AppData\Roaming\Microsoft\Excel\XLSTART),每次打开Excel都会自动加载启动器并打开目标文件。

补充说明

如果不想用启动器,也可以把代码放到Personal.xlsb(个人宏工作簿)中,通过自定义快捷键触发打开加密文件,但无法实现「双击加密文件就自动输密码」的效果——因为双击加密文件时,Excel会先触发密码验证流程,再执行任何VBA代码。

内容的提问来源于stack exchange,提问作者Noam Brand

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:23:10