Accédez à la valeur de return de la fonction VBA dans .NET?

J'ai le code suivant dans VBA (qui réside dans un classur Excel 2007):

Public Function Multiply(a As Double, b As Double) As Double Multiply = a * b End Function 

Si j'invoque Multiplier à partir d'un autre code VBA, il renvoie la valeur correcte. Cependant, lorsque j'appelle Multiplier à partir de C #:

 var excel = new Application {Visible = true}; excel.Workbooks.Open(filename); var returned = excel.Run("Sheet1.Multiply", (Double) a, (Double) b); 

… la multiplication a lieu (je peux vérifier cela en ajoutant un suivi à la fonction Multiplication dans VBA) mais la valeur renvoyée n'est pas disponible dans mon code C #; returned est toujours null .

Quelqu'un pourrait-il me dire comment get à la valeur de return Multiplier à partir de mon code C #?

Avez-vous essayé de déplacer votre fonction vers un module régulier dans Excel (pas un module de feuille)?

Un exemple simple:

La feuille de calcul de Module1 possède Module1 contenant:

 Public Function test() As Ssortingng test = "hello 1234" End Function 

Avec objExcel déjà configuré sur la feuille de calcul …

 Dim result = objExcel.Run("Module1.test") MsgBox(result) 

… produit hello 1234 dans le message contextuel.

Parce que j'avais essayé à l'origine de cela ? module1.test() ? module1.test() (avec succès) dans la window VBA immédiate, j'essayais d'essayer d'get objExcel.Run("Module1.test()") , mais j'avais une erreur: Cannot run the macro .... The macro may not be available in this workbook or all macros may be disabled. – enlever les parenthèses a fait l'affaire.

Essayez de modifier votre fonction Multiply pour être comme le code ci-dessous:

 Public Function Multiply(a As Double, b As Double) As Double return a * b End Function