Le funzioni definite dall'utente nel componente aggiuntivo di automazione si comportano in modo diverso Excel 2007
-
03-07-2019 - |
Domanda
Ho creato un componente aggiuntivo di automazione in C # .NET e ho uno shim dll per questo. Il shim dll contiene tutti i metodi definiti dall'utente che chiamano l'appropriato metodi nell'assembly .NET.
Il problema che sto affrontando è legato a Excel 2007.
In Excel 2003, 1. Aggiungi una nuova forma a un foglio di lavoro 2. Inserisci > > Funzione > > SOMMA. Viene visualizzata la finestra di dialogo Argomenti della funzione 3. fare clic sulla forma appena inserita anziché su una cella Nota: non succede nulla e nessun valore di cella viene inserito automaticamente in riquadro degli argomenti
Ora in Excel 2007, 1. Inserisci una nuova forma 2. Scheda Formule Ribbon > > Inserisci funzione > > SOMMA. Finestra di dialogo Argomenti funzione viene fuori 3. Fare clic sulla forma appena inserita Nota che ora viene visualizzata una finestra di dialogo di errore che dice " La formula che hai digitato contiene un errore "
Viene visualizzata questa finestra di dialogo per una funzione predefinita (SUM). Se seleziono il mio dall'elenco al posto di SUM, la finestra di dialogo di errore non viene visualizzata e la finestra di dialogo Argomento della funzione scompare. La cella quindi mostra un errore SmartTag.
C'è qualcosa che deve essere inserito nella dll SHIM per ogni funzione? Come un attributo o qualcosa che visualizzerà questa finestra di errore. O forse qualche valore speciale che viene restituito dal metodo per dire che l'argomento ha generato un errore.
Le funzioni definite nello shim COM sono come:
STDMETHOD(GetArea)(MyExcelAddIn::Range *r, double *pRetVal)
{
return m_pMyUDF->GetArea(r, pRetVal);
}
Soluzione
Ho contattato Microsoft e hanno confermato che si tratta di un bug nel prodotto Excel. Pubblicherò il link del bug quando lo ottengo da loro.