我正在开发一个excel加载项(Office 2013)。
我想覆盖Excel键盘快捷方式。
例如, ctrl + e 现在必须将文本置于单元格中心。
我从哪里开始?我无法在互操作文档中找到它。
答案 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");