Excel-DNA, проблема с включением кода onAction ленты. F # - PullRequest
0 голосов
/ 12 апреля 2020

Я нахожусь в 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?

EDIT1: как предложено в файлах примеров, я включил параметр Excel «Показать ошибки интерфейса пользователя надстройки» (в разделе вкладка «Дополнительно» в разделе «Общие») . Сообщение об ошибке, которое я получил, нажимая на 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, я получаю это сообщение в окне вывода VS ExcelDna.Integration Warning: 1 : Assembly OFFICE could not be loaded from resources.. Возможно, это связано, но я не совсем уверен, где можно решить проблему.

1 Ответ

2 голосов
/ 12 апреля 2020

Похоже, вам нужно добавить ссылку на сборку Office.dll в вашем проекте. Это только из связанных с COM сборок PIA (например, Microsoft.Office.Interop.Excel).

Либо добавьте непосредственно в свой проект, либо установите пакет NuGet с именем «ExcelDna.Interop», который включает эту библиотеку и также должен добавить ссылку.

...