2014-04-04 29 views
2

我正在开发一个excel加载项(office 2013)。通过加载项更改键盘快捷方式的办公室?

我想覆盖Excel键盘快捷键。

例如,CTRL +Ë必须现在中心细胞文本。

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

+0

http://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C –

回答

4

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

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

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