Pregunta ¿Podemos escribir una macro en C # para Excel


Tengo que atravesar alrededor de 25 hojas en Excel para hacer operaciones. Lo hago usando vba y me parece muy lento, por lo tanto, quería saber si podría usar C # y si eso me ayudara a acelerar el proceso.


32
2017-09-03 08:31


origen


Respuestas:


Llame a C # desde el libro de Excel, como macro de VBA, no puede

Acceda al libro de Excel desde la aplicación C #: puede. Esto se llama Herramientas de Microsoft Visual Studio para Office (VSTO)


30
2017-09-03 09:22



Aunque es posible que pueda escribir un equivalente en C # en su macro de VBA actual utilizando VSTO, dudo mucho si esto representaría una diferencia significativa en el rendimiento.

En ambos casos, manipulará los mismos objetos COM de Excel y es probable que el tiempo de ejecución sea muy similar.

Su rendimiento dependerá principalmente de las técnicas que esté utilizando para manipular los objetos de Excel. Como ejemplo simple, puede asignar valores de un Rango de Excel a un Array bidimensional en una sola instrucción: esto es mucho más rápido que iterar a través de las filas y columnas en el código y copiar valores en su matriz uno por uno.

Te recomiendo que publiques fragmentos del código VBA que consideras demasiado lento y pidas consejos para mejorar el rendimiento.


7
2017-09-03 10:08



Puedes probar mi ESharper complemento para escribir un comando de automatización de Excel en C #. Es más fácil que crear una aplicación C # separada o un complemento, y tendrá acceso tanto al modelo de objetos de Excel como a la API de Excel C con más opciones para la optimización del rendimiento.


4
2018-04-16 18:28



¿Qué operaciones estás haciendo exactamente? En primer lugar, no es necesario que escriba el código VBA usted mismo. Simplemente puede grabar una macro en un libro de trabajo y guardarla en C: \ Archivos de programa \ Microsoft Office \ Office12 \ Xlstart. Excel registrará una macro y la pondrá a disposición en todas las hojas que abra.

También puede modificar el código VBA generado automáticamente en el proceso mencionado anteriormente para que se ajuste a sus necesidades.

Personalmente, no creo que escribir un complemento de C # para hacer el trabajo acelerará la tarea. VBA es un lenguaje creado específicamente para trabajar con el Modelo de objetos de Office. Si eso no funciona lo suficientemente rápido, entonces ¿necesita ver qué operación está realizando?

Creo que crear un complemento de C # para manipular el Modelo de objetos de Excel y mantenerlo es demasiado para hacer. También implicará una gran curva de aprendizaje.


-1
2017-09-03 09:17