Publisher VBA设置F8快捷键运行宏报编译错误如何解决
错误原因
Application.OnKey是Excel、Word等Office组件专属的VBA方法,Microsoft Publisher的对象模型不支持该方法,直接调用就会触发"Method or data member not found"编译错误,这也是按F8无响应的核心原因。
正确实现方案
Publisher中给宏绑定全局快捷键需要通过KeyBindings对象实现,操作步骤如下:
- 删除Module2中原有调用
OnKey的错误代码 - 在任意标准模块中粘贴以下兼容版绑定代码,不需要额外引用常量库,所有Publisher版本通用
Sub BindF8ToExportMacro() ' 常量定义:F8键码、宏绑定类别 Const F8_KEY_CODE As Long = 119 Const MACRO_CATEGORY As Long = 2 ' 先清除已有F8键绑定,避免重复冲突 On Error Resume Next KeyBindings.Key(F8_KEY_CODE).Clear On Error GoTo 0 ' 绑定F8键到指定宏 KeyBindings.Add _ KeyCode:=F8_KEY_CODE, _ KeyCategory:=MACRO_CATEGORY, _ Command:="Export_as_Image" End Sub
- 手动运行一次
BindF8ToExportMacro宏,绑定立即生效,之后按F8就会自动触发写在Module1里的Export_as_Image宏。
可选配置:永久自动绑定
如果希望每次打开这个Publisher文件时自动完成快捷键绑定,不需要手动运行绑定宏,可以把以下代码写到ThisDocument模块的代码区:
Private Sub Document_Open() Const F8_KEY_CODE As Long = 119 Const MACRO_CATEGORY As Long = 2 On Error Resume Next KeyBindings.Key(F8_KEY_CODE).Clear On Error GoTo 0 KeyBindings.Add _ KeyCode:=F8_KEY_CODE, _ KeyCategory:=MACRO_CATEGORY, _ Command:="Export_as_Image" End Sub
如果需要恢复F8键的默认功能,执行
KeyBindings.Key(119).Clear语句即可清除自定义绑定。
内容的提问来源于stack exchange,提问作者Charlie
相关产品推荐
相关产品推荐

