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

时间:2014-04-04 06:20:00

标签: c# excel ms-office office-interop

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

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

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

我从哪里开始?我无法在互操作文档中找到它。

1 个答案:

答案 0 :(得分: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);
}

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");