Como dice el sujeto, escribí una clase C#, digamos Prueba, luego la compilé como una DLL y la expuse a Excel como un servidor de automatización COM. Ahora, puede llamar a los métodos de esa clase en fórmulas de Excel directamente o a través de una función de VBA que los llame bajo el capó. Lo que sucede en el segundo caso es relativamente transparente (¡escribiste el código!), Mientras que en el primer caso asumo que una instancia de Prueba se instancia y se usa de forma transparente (tiene que ser porque los métodos expuestos no son y, por lo que he leído - no puede ser estático) pero exactamente cuándo y cómo no está claro. Por lo tanto, mi pregunta es: ¿cuál es el ciclo de vida preciso de un servidor de automatización llamado en este contexto y dónde está eso documentado?Ciclo de vida del servidor de automatización .NET llamado desde Excel a través de COM
Una pregunta subsidiaria es si hay una manera de hacer que tanto las llamadas directas en las fórmulas y las llamadas a través de VBA utilicen una sola instancia única de Prueba. Creo que ya sé cómo hacer que todos los procedimientos de VBA utilicen una sola instancia de prueba, pero aun así se crea una segunda cada vez que se llama directamente a un método de prueba en una fórmula.
Por último, si esa clase de prueba contiene recursos en el nivel de clase (es decir, recursos estáticos), ¿cuándo y cómo debe deshacerse de ellos? De nuevo, eso plantea la pregunta de cuándo exactamente las clases Test son creadas y destruidas por .NET/COM Interop.
Precisión: el servicio es una DLL, no una aplicación, y Excel debe ser el único que lo usa, aunque puede haber más de una copia abierta de la hoja de cálculo. Se trata de Excel 2007.