为什么 VBA 运行时错误 13 启动 DDE 对话时类型不匹配



我有这个代码:

Public channel As Long
Sub Button1_Click()
  MsgBox "all is OK"
  ' Application.ActiveCell.Font.Bold = True
  channel = Application.DDEInitiate("Excel", "System")
  MsgBox "Conversation started"
End Sub

为什么 DDEInitiate 表达式给出错误 13?

@VincentG提到的 office-watch 博客中显示的注册表项仅与 Writer 相关。Excel有自己的一组键(可以使用Sysinternals ProcMon进行检查,无论是在Excel启动时,还是从VBA调用DDEInitiate时(,这些键至少是:

  • HKCUSOFTWAREMicrosoftOffice16.0ExcelOptions - DDEAllowed:REG_DWORD=1
  • HKCUSOFTWAREMicrosoftOffice16.0ExcelSecurity - DisableDDEServerLaunch:REG_DWORD=0DisableDDEServerLookup:REG_DWORD=0.

我没有检查其中哪些是最低要求。无论如何,启用 DDE 确实会带来安全风险。

最新更新