通过 Office 加载项更改键盘快捷方式

本文关键字:键盘 快捷方式 Office 加载项 通过 | 更新日期: 2023-09-27 17:56:38

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

我想覆盖 Excel 键盘快捷键。

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

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

通过 Office 加载项更改键盘快捷方式

好吧,没有纯粹的 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");