更改办公室的加载项的键盘快捷方式?

我正在开发一个Excel加载项(Office 2013)。

我想覆盖一个Excel键盘快捷键。

例如, ctrl + e现在必须将文本居中在单元格中

我从哪说起呢? 我无法在互操作性文档中find它。

那么,没有纯粹的C#方法来分配一个命令的快捷方式,但我想我已经找出了一个解决方法。

在Excel中,您可以为macros指定一个快捷方式。 这显然意味着你需要在你的工作簿中有一个macros。 如果您正在使用interop,则可以以编程方式创build一个macros,并为其分配一个快捷方式。

创build一个addModule()函数,以编程方式创build一个标准编码模块,并向其中写入代码。 然后使用Application.OnKey()为该macros指定一个快捷方式。

你的addModule()

 void addModule() { VBProject vbProj = Globals.ThisWorkbook.VBProject as VBProject; VBComponent vbComp = vbProj.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule); vbComp.CodeModule.DeleteLines(1, vbComp.CodeModule.CountOfLines); string code = "Public Sub CentreText() \n" + " activeCell.HorizontalAlignment = xlCenter \n" + "End Sub"; vbComp.CodeModule.AddFromString(code); } 

codestring是一个纯粹的VBAmacros, activeCell的文本横向activeCell

然后在可执行代码中的任何地方

 addModule(); Worksheet ws = Globals.ThisWorkbook.ActiveSheet as Worksheet; Workbook wb = ws.Parent as Workbook; Microsoft.Office.Interop.Excel.Application app = wb.Parent as Microsoft.Office.Interop.Excel.Application; app.OnKey("^e", "CentreText");