2012-03-13 53 views
10

¿Cuál es la mejor manera de evitar la duplicación de código cuando se trabaja en VBA?Cómo reutilizar el código con VBA

Estoy acostumbrado a idiomas donde puedo agregar un extracto de importación y obtener acceso a todas las propiedades y funciones públicas de una clase, así que puedo crear una clase de utilidad con algunas funciones comunes y tener acceso a eso en cualquier proyecto Elijo importarlo a. Cada vez que quiero actualizar una de esas funciones, una edición es todo lo que se necesita para que funcione en todos los proyectos.

¿Hay alguna manera de replicar esta funcionalidad en VBA?

Respuesta

13

Lo que sigue se centra en Excel, pero estoy bastante seguro de que lo mismo se aplicaría a cualquier producto de Office.

La manera fácil es guardar su código reutilizable como un complemento (* .xla para Excel 2003, * .xlam para Excel 2007+). A continuación, agrega el complemento a Excel y todas las hojas de cálculo que abra tendrán acceso a las funciones personalizadas que tiene en su complemento. Si agrega un código VBA específico a una hoja de cálculo, puede agregar una referencia a su complemento y su código VBA tendrá acceso a todas las sub, funciones y clases públicas de su complemento.

En mi organización, utilizamos 3 complementos caseros - se almacenan en C: \ Program Files \ OrganisationName. Y todos tienen acceso a ellos. Cuando se realiza una actualización, solo tenemos que copiar la nueva versión en el disco duro de todos y reiniciar Excel y tienen la nueva versión.

Los complementos contienen funciones de servicios públicos, tales como funciones de:

  • leer datos desde/escribir datos en hojas de cálculo/bases de datos/archivos.
  • los datos habituales de manipulación, tales como la eliminación de duplicados de una lista
  • funciones estadísticas avanzadas
  • etc.

algunos inconvenientes:

  • Si tiene varias instancias de Excel abiertos, sólo se uno puede actualizar el complemento, las otras instancias están en modo de solo lectura
  • Si Excel se bloquea, el modo de recuperación automática generalmente no guarda el los cambios realizados en el complemento (TBC en las versiones más recientes) - hay algunas herramientas para auto ahorran regularmente

Una alternativa es desarrollar XLL o bibliotecas COM en VB o C#, por ejemplo, pero esto es algo que tengo no probado.

Hay muchos tutoriales en línea si necesita un procedimiento más detallado.

+0

Perfecto. Me quedé atrapado un poco porque olvidé establecer una referencia, pero una vez que volví a leer tu publicación e hice eso, todo funcionó correctamente. Gracias :) –

+0

Uno de sus inconvenientes (actualización) se resuelve aquí: http://www.excelguru.ca/content.php?152-Deploying-Add-ins-in-a-Network-Environment. Espero que esto ayude a cualquiera que venga aquí en el futuro. –

Cuestiones relacionadas