我继承了一个工作簿和一个个人宏工作簿,它们相互配合使用(绘制一个 CSV 和 2 个 LST 文件)来生成报告。电子表格有基本的说明,基本上是:
- 登录服务器
- 将 3 个文件(CSV 和 LST 文件)放在所需的子目录中
- 打开报告模板
- 保存报告模板
- 打开个人宏工作簿
- 点击“Ctrl+J”
- 按照提示操作
- 保存并分发报告
我根据需要打开文件(启用宏)并按照说明进行操作,但是当我按下“Ctrl + J”时什么也没有发生。
我搜索了两个工作簿的 VBA,但找不到“Ctrl+J”(或 onkey 或类似命令)
原来的“开发人员”已离开该组织,因此我无法与他们交谈。
有什么建议可以开始吗?或者有没有办法将所有 VBA 代码复制到记事本中以搜索工作簿中的隐藏深度?
提前致谢。
答案1
使用以下方式录制宏时宏录制器,您可以映射一个热键:
当您查看生成的代码时,您在编辑器中看到的内容可能如下所示:
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 中导入/导出模块非常麻烦。橡皮鸭它的代码检查可以帮助您:
此特定检查结果(针对Invoke_Func
隐藏属性)的每个单独实例都意味着您正在查看分配了热键的宏。
右键单击该检查结果并选择“添加缺失属性注释”后,代码模块现在如下所示:
'@ExcelHotkey J
Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+Shift+J
'
...code...
End Sub
现在您可以删除宏记录器生成的注释,并让 Rubberduck 将@ExcelHotkey
注释与适当的隐藏属性值同步 - 所有这些都无需离开 VBE 或导出/导入任何内容。
将注释更改为会在将属性和注释注释与 Rubberduck 同步后,@ExcelHotkey e
将热键从Ctrl+ Shift+更改J为Ctrl+ 。e