Saya menggunakan Excel 2010 dan mencoba menjalankan Excel-DNA/ Contoh kode untuk kustomisasi pita di 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 -->

Tindakan Button1 bekerja, dan menempatkan break-point pada baris 14 bekerja seperti yang diharapkan.

Namun tindakan Button3, OnDumpData, tidak. Saya dapat melihat bahwa kode tersebut tidak pernah dipanggil karena break-point yang ditempatkan pada baris 45 tidak pernah mengenai.

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

Saya pertama kali berpikir bahwa ini mungkin masalah versi dan saya mencoba mengganti baris cutomUI (#26) .../office/2006/01... dengan .../office/2009/07... tetapi masalahnya tetap ada.

Apa yang saya lewatkan (pengaturan atau sesuatu ...)? Bagaimana saya bisa membuat Button3 memecat kode OnDumpData dengan benar?

EDIT1: Seperti yang disarankan dalam file contoh, saya mengaktifkan opsi Opsi Excel "Tampilkan kesalahan antarmuka pengguna tambahan" (di bawah tab Lanjutan di bawah Umum). Pesan kesalahan yang saya dapatkan saat menekan Button3 adalah:

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.

... Dan kemudian saya perhatikan bahwa ketika saya menutup lembar debug Excel, saya mendapatkan pesan ini di jendela keluaran VS ExcelDna.Integration Warning: 1 : Assembly OFFICE could not be loaded from resources.. Ini mungkin terkait tetapi saya tidak sepenuhnya yakin di mana harus memperbaiki masalah ini.

0
Janthelme 12 April 2020, 08:33

1 menjawab

Jawaban Terbaik

Sepertinya Anda perlu menambahkan referensi ke rakitan Office.dll di proyek Anda. Ini hanya dari rakitan PIA terkait COM (seperti Microsoft.Office.Interop.Excel).

Tambahkan langsung ke proyek Anda, atau instal paket NuGet yang disebut "ExcelDna.Interop" yang menyertakan pustaka ini dan harus menambahkan referensi juga.

2
Govert 12 April 2020, 11:45