Tengo el siguiente código en VBA (que reside en un libro de Excel 2007):¿Acceso a valor de retorno desde la función VBA en .NET?
Public Function Multiply(a As Double, b As Double) As Double
Multiply = a * b
End Function
Si invoco Multiplicar en otro código VBA, devuelve el valor correcto. Sin embargo, cuando llamo Multiplicar en C#:
var excel = new Application {Visible = true};
excel.Workbooks.Open(filename);
var returned = excel.Run("Sheet1.Multiply", (Double) a, (Double) b);
... la multiplicación se lleva a cabo (puedo verificar esto mediante la adición de rastreo para la función Multiplicar en VBA), pero el valor devuelto no está disponible en mi código C# ; returned
es siempre null
.
¿Podría alguien decirme cómo obtener el valor de retorno de Multiply de mi código C#?
He podido evitar esto modificando Multiply() para establecer el valor de una celda en el valor de retorno y leyendo el valor de esa celda desde C#. Feo, pero funciona. –
¿Alguna idea de por qué funciona desde un módulo pero no desde la hoja? – anakic
Ninguno Tengo miedo. De hecho, no he hecho ningún trabajo significativo en Microsoft desde 2011, por lo que probablemente no responda a menos que alguien más pueda ayudar ... –