Excel-DNA,触发 Ribbon 的 onAction 代码时出现问题。 F#

Excel-DNA, issue with firing Ribbon's onAction code. F#

我在 Excel 2010 年并尝试 运行 Excel-DNA/Samples code 在 F# 中自定义功能区。

<tab id='CustomTab' label='My F# Tab'>
   <group id='SampleGroup' label='My Sample Group'>
        <button id='Button1' label='Run a macro' onAction='RunTagMacro' tag='showMessage' />    <!-- works fine -->
        <button id='Button3' label='Dump the Excel Version to cell A1' onAction='OnDumpData'/>  <!-- DOES NOT WORK -->

Button1 的动作有效,在第 14 行放置断点按预期工作。

但是 Button3 的操作 OnDumpData 没有。我可以看到代码从未被调用,因为第 45 行上的断点从未被击中。

member this.OnDumpData (control:IRibbonControl) =
    let app = ExcelDnaUtil.Application :?> Application  // line 45. Breakpoint here is never reached.
    let cellA1 = app.Range("A1")

我首先认为这可能是版本控制问题,因此我尝试将 cutomUI 行 (#26) .../office/2006/01... 替换为 .../office/2009/07...,但问题仍然存在。

我错过了什么(设置或其他...)?如何让 Button3 正确触发 OnDumpData 代码?

编辑1: 按照示例文件中的建议,我打开了 Excel 选项 "Show add-in user interface errors" 选项(在“常规”下的“高级”选项卡下)。按下 Button3 时收到的错误消息是:

An exception occurred while calling function "OnDumpDate". Exception message is :
Could not load file or assembly 'office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The system cannot find the file specified.

... 然后我注意到当我关闭调试 Excel sheet 时,我在 VS 的输出中收到此消息 window ExcelDna.Integration Warning: 1 : Assembly OFFICE could not be loaded from resources.。这可能是相关的,但我不完全确定在哪里解决这个问题。

听起来您需要在项目中添加对 Office.dll 程序集的引用。这只是与 COM 相关的 PIA 程序集(如 Microsoft.Office.Interop.Excel)。

直接添加到您的项目中,或者安装名为 "ExcelDna.Interop" 的 NuGet 包,其中包含此库并且还应该添加引用。