Ho il seguente codice VBA (che risiede in una cartella di lavoro di Excel 2007):Valore di ritorno di accesso dalla funzione VBA in .NET?
Public Function Multiply(a As Double, b As Double) As Double
Multiply = a * b
End Function
Se invoco Moltiplicare da altro codice VBA, restituisce il valore corretto. Tuttavia, quando chiamo Moltiplicare da C#:
var excel = new Application {Visible = true};
excel.Workbooks.Open(filename);
var returned = excel.Run("Sheet1.Multiply", (Double) a, (Double) b);
... la moltiplicazione avviene (posso verificare questo con l'aggiunta di analisi per la funzione Multiply in VBA), ma il valore restituito non è disponibile nel mio codice C# ; returned
è sempre null
.
Qualcuno potrebbe dirmi come ottenere il valore restituito di Multiply dal mio codice C#?
Sono stato in grado di aggirare questo problema modificando Multiply() per impostare il valore di una cella sul valore restituito e leggendo il valore di tale cella da C#. Brutto ma funziona. –
Qualche idea sul perché funzioni da un modulo ma non dal foglio? – anakic
Nessuno, ho paura. In realtà, non ho fatto alcun lavoro significativo su Microsoft dal 2011, quindi probabilmente questo non avrà una risposta a meno che qualcun altro là fuori possa aiutare ... –