静态函数可以工作,但 Excel-DNA 中的 onKey 事件不起作用

问题描述 投票:0回答:1

这是我的代码,

public class Main : IExcelAddIn
{

        public void AutoOpen()
        {
            dynamic app = ExcelDnaUtil.Application;
            app.OnKey("^N", "FormatNumbers");
        }

        public void AutoClose()
        {
        }

    }

    public class KeyboardShortcuts
    {

        public static void FormatNumbers()
        {
            dynamic app = ExcelDnaUtil.Application;
            dynamic selection = app.Selection;
            selection.NumberFormat = "#,##0;[Red]-#,##0";
        }
    }

    public static class MyFunctions
    {
        [ExcelFunction(Description = "My first .NET function")]
        public static string SayHello(string name)
        {
           return "Hello " + name;
        }
    }

}

我目前正在使用 .NET 8.0 和 Windows-7.0 平台构建上述类。阅读文档后,我发现仅支持 .NET 6.0。

但是,项目构建得很好,并且静态

SayHello
功能正常工作。

我遇到的问题是

FormatNumbers
类没有。我出现以下错误消息,

无法运行宏“FormatNumbers”。该宏可能不可用或所有宏可能被禁用。

某些功能正在运行,因此显然这不是权限或防病毒问题。我已将信任中心设置设置为让所有宏运行并且加载项文件夹(包括子文件夹)受到信任,但仍然没有运气。

Error

如果您能帮助我调试此问题,我将不胜感激。

提前谢谢您。

c# .net excel excel-dna
1个回答
0
投票

你可以试试

[ExcelCommand(ShortCut="^N")]
public static void FormatNumbers()
{
  ...
}

或使用 C API 而不是 COM 接口

XlCall.Excel(XlCall.xlcOnKey, "^N", "FormatNumbers");
© www.soinside.com 2019 - 2024. All rights reserved.