如何识别 Excel 工作簿中快捷键触发的内容?

如何识别 Excel 工作簿中快捷键触发的内容?

我继承了一个工作簿和一个个人宏工作簿,它们相互配合使用(绘制一个 CSV 和 2 个 LST 文件)来生成报告。电子表格有基本的说明,基本上是:

  1. 登录服务器
  2. 将 3 个文件(CSV 和 LST 文件)放在所需的子目录中
  3. 打开报告模板
  4. 保存报告模板
  5. 打开个人宏工作簿
  6. 点击“Ctrl+J”
  7. 按照提示操作
  8. 保存并分发报告

我根据需要打开文件(启用宏)并按照说明进行操作,但是当我按下“Ctrl + J”时什么也没有发生。

我搜索了两个工作簿的 VBA,但找不到“Ctrl+J”(或 onkey 或类似命令)

原来的“开发人员”已离开该组织,因此我无法与他们交谈。

有什么建议可以开始吗?或者有没有办法将所有 VBA 代码复制到记事本中以搜索工作簿中的隐藏深度?

提前致谢。

答案1

使用以下方式录制宏时宏录制器,您可以映射一个热键:

Excel 的宏录制器对话框将 Ctrl+Shift+J 热键映射到 Macro1

当您查看生成的代码时,您在编辑器中看到的内容可能如下所示:

Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+Shift+J
'
    ...code...
End Sub

这很好,但是如果你删除了该评论,你就不再知道热键是什么了。

如果您导出该模块并在记事本中打开它,您将看到编辑器未显示的内容:

Sub Macro1()
Attribute Macro1.VB_ProcData.VB_Invoke_Func = "J\n14"
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+Shift+J
'
    ...code...
End Sub

这是神奇的部分:

Attribute Macro1.VB_ProcData.VB_Invoke_Func = "J\n14"

所有 Excel 热键都涉及Ctrl键。大写J表示使用Shift键,如果您将该属性值更改为 ,"e\n14"则热键将变为Ctrl+ e

在 VBE 中导入/导出模块非常麻烦。橡皮鸭它的代码检查可以帮助您:

Rubberduck 检查警告缺少注释

此特定检查结果(针对Invoke_Func隐藏属性)的每个单独实例都意味着您正在查看分配了热键的宏。

右键单击该检查结果并选择“添加缺失属性注释”后,代码模块现在如下所示:

'@ExcelHotkey J
Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+Shift+J
'
    ...code...
End Sub

现在您可以删除宏记录器生成的注释,并让 Rubberduck 将@ExcelHotkey注释与适当的隐藏属性值同步 - 所有这些都无需离开 VBE 或导出/导入任何内容。

将注释更改为会在将属性和注释注释与 Rubberduck 同步后,@ExcelHotkey e将热键从Ctrl+ Shift+更改JCtrl+ 。e

相关内容