Il mio add-on Excel
(XLL AddIn, chiamalo MyAddIn
) è costruito con C#, ExcelDNA, NetOffice, VS2010. Il client ha un altro addin (chiamiamolo B
), immagino sia scritto in VBA. Il client dice che B
funziona correttamente senza MyAddIn
. Una volta MyAddIn
è installato, B
fallisce con l'errore:Errore Excel 406 quando si utilizzano sia componenti aggiuntivi VBA che ActiveX.
Error code: 406 Error message: Non-modal forms cannot be displayed in this host application from an ActiveX DLL, ActiveX Control, or Property Page.
ho visto this Microsoft resource, ma io non voglio dire solo il cliente che B
Addin esigenze. Voglio fare qualcosa per evitare questo dalla mia parte.
Ecco i passi riportati di vedere la questione:
- Quando viene installato B Addin, non fa alcuna voce di registro per il Microsoft
Excel
. - Quando
MyAddin
è installato, crea una voce di registro per MicrosoftExcel
. - Le voci del Registro di sistema in questo caso indicano che l'addin deve essere aperto quando viene avviato
Excel
, pertanto l'addinB
non viene avviato,Excel
funziona correttamente,MyAddIn
funziona correttamente. - Ora, quando viene avviato l'addin
B
, viene visualizzato l'errore 406 mostrato sopra. - Possiamo ignorare l'errore e continuare a lavorare con l'addin
B
; disabilitazioneMyAddIn
è la soluzione alternativa. - Quando viene avviato l'addin
B
, vediamo cheMyAddIn
viene caricato prima dell'aggiunta diB
e quindi viene visualizzato l'errore 406. - Quando disinstalliamo
MyAddIn
, questo errore non si verifica più e tutto funziona correttamente. - Per rimuovere questo errore, abbiamo provato a modificare l'ordine del registro per rendere l'addin
B
sempre aperto primaMyAddin
.- Questo funziona, ma poi questo è un cambiamento globale per Microsoft
Excel
, il che significaB
Addin sarà sempre aperta, anche quando lanciamo soloExcel
. Questo non è desiderato, poiché l'addinB
non può consentire agli utenti di lavorare con i dati statici mentre l'addinB
continua ad aggiornarsi in tempo reale. Questo è il motivo per cui l'addinB
non crea una voce nelle impostazioni del registro. Quindi le modifiche al registro non sono un'opzione. Non è sempre possibile aprireB
addin ogni volta cheExcel
è aperto.
- Questo funziona, ma poi questo è un cambiamento globale per Microsoft
Come menzionato nel messaggio di errore, MyAddIn sta tentando di visualizzare un modulo non modale, causando il problema. Hai bisogno di capire di che forma si tratta. Sarebbe anche d'aiuto se potessi pubblicare del codice. – Tarik