通过办公室加载项更改键盘快捷键?

Vin*_*ent 3 c# excel ms-office office-interop

我正在开发一个excel插件(办公室2013).

我想覆盖Excel键盘快捷方式.

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

我从哪里开始?我在interop文档中找不到它.

小智 5

好吧,没有纯C#方式为命令分配快捷方式,但我想我刚刚想出了一个解决方法.

在Excel中,您可以为宏指定快捷方式.这显然意味着您需要在工作簿中使用宏.如果您正在使用互操作,则可以以编程方式创建宏并为其指定快捷方式.

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

您的 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);
}
Run Code Online (Sandbox Code Playgroud)

code字符串是一个纯VBA宏,它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");
Run Code Online (Sandbox Code Playgroud)