c# - 获取带有描述的 Excel 宏名称

标签 c# vba excel vsto

我发现了很多使用自动化从 Excel 中获取宏名称的方法 (example)。它们大部分相同,但都不能 1) 检索宏描述(每个记录的宏都可以使用 Excel UI 进行描述)或 2) 过滤掉普通的 VBA 函数(有 Excel 记录的宏,也有你需要的函数/宏)自己写)。似乎 Excel 将描述作为注释保存在源代码中,但也在一些私有(private)地方。如果删除代码注释,Excel 仍然可以看到描述。

我需要至少实现 2),如果可能的话还需要实现 1)。我会很感激 C# 或 VBA 解决方案,但实际上任何东西都可以。

最佳答案

如果你在 excel 中录制一个宏,在同一个模块中添加另一个“手写”宏,然后将模块导出到一个文件,你会看到录制的宏有额外的手写缺少的属性-输入一个。

Sub RecordedMacro()
Attribute RecordedMacro.VB_Description = "some description here"
Attribute RecordedMacro.VB_ProcData.VB_Invoke_Func = "g\n14"
'
' RecordedMacro Macro
' some description here
'
' Keyboard Shortcut: Ctrl+g
'
    Range("C8").Select
    ActiveCell.FormulaR1C1 = "sfhsf"

End Sub

您可以使用代码导出模块,这样您就可以解析导出的文件以查找这些属性。

这是使用 VBA 访问/操作 VBE 内容的好资源: http://www.cpearson.com/excel/vbe.aspx

关于c# - 获取带有描述的 Excel 宏名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6598860/

相关文章:

c# - 为什么在包含等待的方法中使用 Task.FromResult<T>(T result) ?

c# - 我应该使用哪个 VMware API?

c# - 实现类似 Excel 的公式引擎

excel - VBA 宏循环遍历多个工作表并返回完全匹配

vba - 在 VBA 数组中查找某个范围内的至少一项

vba - 在未打开的电子表格中使用 VBA FIND() 函数(或类比)

c# - 将具有随机行和列(由对象定义)的表导出到 Excel

c# - Excel文件的VBA代码中的文本替换

Excel VBA : SQL Query to Return n Rows in Random Order

c# - 在 C# 中制作小行星游戏