Tengo que recorrer unas 25 hojas en excel para hacer operaciones. Lo estoy haciendo usando vba y encontrándolo realmente lento, por lo tanto, quería saber si podría usar C# y si lo hago eso me ayudaría a acelerar el proceso.¿Podemos escribir una macro en C# para Excel
Respuesta
¿Qué operaciones está 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 ajustar 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 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.
Las macros creadas con la característica _record macro_ de Excel tienden a ser ** muy lentas ** porque emiten una tonelada innecesaria de comandos _activate_ y _select_. Puede ser útil registrar una macro breve para ver cómo se puede hacer algo, pero si la velocidad de ejecución es motivo de preocupación, debe volver a escribir la macro grabada. – riderBill
llamada C# libro de Excel VBA macro como - no se puede
Acceso libro de Excel de aplicación C# - se puede. Esto se llama Herramientas de Microsoft Visual Studio para Office (VSTO)
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.
Le recomiendo que publique fragmentos del código VBA que le parezcan demasiado lentos y le pida consejos para mejorar el rendimiento.
Puede probar mi complemento ESharper 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.
- 1. Escribir una macro en Perl
- 2. macro para Ocultar filas en excel 2010
- 3. Cómo escribir macro para Notepad ++?
- 4. ¿Cómo configurar una prueba unitaria en VBA Excel Macro?
- 5. openrowset para excel: ¿podemos omitir varias filas?
- 6. VBScript para escribir una macro dentro de un archivo de Excel
- 7. Macro independiente de Excel
- 8. ¿Podemos escribir una Hashtable en un archivo?
- 9. EXcel VBA: Macro de Excel para crear una tabla en PowerPoint
- 10. Escribir una fórmula en una celda de Excel usando VBA
- 11. Cómo escribir macro (simple)?
- 12. ¿Combina varias celdas en una en Excel con macro?
- 13. macro elisp para escribir la función?
- 14. Microsoft Excel Macro para ejecutar el programa Java
- 15. Deshacer de edificio en una macro de Excel de VBA
- 16. ¿Cómo hacer una macro que se ejecuta periódicamente en Excel?
- 17. ¿Cómo generar XML desde una macro de Excel VBA?
- 18. ¿Cómo podemos escribir "in nsstring?
- 19. ¿Cómo llamar macro macro específica de una hoja de un libro de Excel en otro?
- 20. ¿Cómo puedo usar JavaScript dentro de una macro de Excel?
- 21. ¿Cómo podría escribir una macro "defn" en Clojure?
- 22. 400 de error de Excel Macro
- 23. Macro para concatenar dos cadenas en C
- 24. Preprocesador C: expandir macro en una advertencia #
- 25. cómo enmascarar excel código de macro
- 26. ¿Cómo implementar una macro genérica en C?
- 27. C++ # ¿define una macro con corchetes?
- 28. Reutilizando una macro C en varios archivos
- 29. ¿Hay una macro __CLASS__ en C++?
- 30. Excel VBA - Ejecutar macro antes de guardar
No creo que pueda usar C# directamente en una macro. Puede crear un complemento escrito en C# para trabajar con la hoja. Si se acelera, su proceso no puede ser respondido hasta que describa lo que está haciendo. – Khh
@gizgok: hola, acepte mi respuesta – abatishchev