Access VBA调用Application.FollowHyperlink打开PDF后几秒自动关闭问题
针对VBA打开远程PDF异常问题的解决方案
问题核心原因
Application.FollowHyperlink的文件关联逻辑和系统默认程序不统一:它优先遵循Office套件内部的文件关联配置,而非系统层面的默认程序设置,所以哪怕本地默认用Chrome开PDF,Office可能还是调用Adobe Acrobat。- 自动关闭大概率是因为
FollowHyperlink执行完成后没有维持进程的关联状态,或是Adobe在处理远程共享文件时,临时文件的自动清理机制触发了程序关闭。
具体解决办法
1. 改用ShellExecute调用系统默认程序
替换Application.FollowHyperlink,用Windows API直接调用系统默认程序打开PDF,严格遵循本地设置的Chrome作为默认PDF阅读器:
' 64位Office需要加PtrSafe,32位可去掉 Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _ ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Sub btnOpenCert_Click() Dim WO As String Dim CoCFolder As String Dim CustPO As String Dim FilePath As String Dim execResult As Long WO = FieldOnForm '...执行存储过程的代码保持不变... CoCFolder = GetCoCFolder() CustPO = GetPropertyFromWO(WO, 1) FilePath = CoCFolder & CustPO & "_" & WO & ".pdf" ' 调用系统默认程序打开文件,1代表正常窗口显示 execResult = ShellExecute(0, "open", FilePath, vbNullString, vbNullString, 1) ExitLabel: Exit Sub ErrLabel: ErrHandler Err.Number, Err.Description Resume ExitLabel End Sub
2. 修正Office内部的文件关联
打开任意Office软件(比如Excel/Word),按以下步骤操作:
- 点击顶部菜单栏的文件>选项
- 切换到高级标签,找到常规区域的文件位置按钮
- 检查是否存在针对PDF的特殊关联配置,若有则修改为"使用系统默认程序"
- 也可以在Windows的"默认应用设置"中,重新确认PDF的默认程序为Chrome,然后重启Office应用生效
3. 调整Adobe Acrobat的远程文件设置(若需保留Adobe打开)
如果必须用Adobe打开PDF,修改以下设置避免自动关闭:
- 打开Adobe Acrobat,点击编辑>首选项
- 进入文档选项卡,取消勾选"关闭文档后删除临时文件"(部分版本名称可能类似)
- 切换到信任管理器,确保允许打开网络位置的文件,且没有设置自动关闭的安全规则
内容的提问来源于stack exchange,提问作者TheMortiestMorty
相关产品推荐
相关产品推荐

