2010-04-25 25 views
6

Tenemos mucho código de VBA en hojas de cálculo y muchas personas las guardan en unidades locales. Cuando queremos actualizar las hojas de cálculo, enviamos una nueva versión a una unidad compartida pero no tenemos forma de exigir que las personas no utilicen las versiones anteriores de las hojas de cálculo.Administrar versiones de hoja de cálculo

Aquí hay algunas prácticas recomendadas para implementar hojas de cálculo vba, de modo que si alguien carga una versión anterior no se abrirá o le pedirá que actualice. Parece que esto debe ser un problema para cualquier solución personalizada, así que lo hubiera hecho a través de MS tendría alguna solución aquí.

¿Tiene Microsoft una solución de versiones/despliegue estándar para este o tengo que llegar a alguna solución de cosecha propia (pings una base de datos de hojas de cálculo en el arranque para comprobar la versión)

+1

VSTO manejará el escenario que describa, pero es .Net y no vba. ¿Quizás puedas poner el código en un plugin xla? – adrianm

+0

Creo que "oo" está más relacionado con la versión de la estructura de un libro, los datos, los rangos nombrados, etc. No versionar el ensamblado/código; por lo tanto, VSTO no es de mucha ayuda en este sentido. – AMissico

Respuesta

1

Si es solo el código VBA desea poder actualizar una solución es separar todo el código en un XLA que se encuentra en un servidor accesible. y luego los usuarios Excel tiene un cargador de complementos que obtiene la última versión del servidor, o puede insertar el cargador en el libro de trabajo. Hay un ejemplo de trabajo reversioning complemento cargador disponible en http://www.decisionmodels.com/downloads.htm

0

Aunque no he hecho esto. He visto a gente hacer algo similar donde almacenan el código en dlls en la base de datos, y luego verifican que los locales sean los mismos al inicio.

0

Agregue una propiedad personalizada al libro de trabajo, como un GUID, Entero, Fecha o lo que necesite. Al inicio, verifique el valor y determine si VBA debe continuar o la implementación que usted decida. Por lo general, abro la última versión "compartida" del documento e inspecciono su propiedad personalizada. Si el usuario no está utilizando la última versión, muestre un mensaje que le solicite al usuario obtener la última versión. Esto es generalmente lo suficientemente bueno. Lo he hecho durante años con gran éxito para Access, Word y Excel VBA.

Un problema real es la gente que ignora el mensaje para actualizar. Harán esto porque temen perder datos, errores en la última versión, etc. Debe abordar sus inquietudes y no tratar de "bloquear" su "solución" a este problema. Recomiendo encarecidamente que siempre proporcione una forma de "importar/actualizar" los datos a la última versión del libro de trabajo.

Bastante simple de implementar. Si aborda el problema mencionado anteriormente de forma efectiva, la gente comenzará a confiar en el "aviso" y verá que esta es una solución realmente simple y efectiva.

Si su libro de trabajo está vinculado a una base de datos, se vuelve un poco más complicado. En general, no permite que el usuario mantenga los datos fuera de la base de datos. Cuando quieren modificar los datos, generas el libro para ellos. Una vez que hayan terminado de modificar los datos, importará los datos. (El libro de trabajo se guarda con fines de "copia de seguridad" o el usuario puede mantener una copia del libro como referencia o archivo). Esto tiene la ventaja de eliminar la necesidad de mantener la versión del documento, ya que el documento es "virtual".

0
  1. Defina una versión actual propiedad. Use cualquier forma para eso, como una constante en VBA.
  2. Encuentra una forma estándar de accede a la última versión. Podría estar en un disco compartido siempre en la misma ruta, o cualquier otro medio que tenga.
  3. Si número de versión actual < último número de versión a continuación:
    • Pregunte a actualizar
    • muestran el procedimiento de actualización
    • hacer posiblemente algún bloqueo en las operaciones normales de VBA hasta que la actualización se realiza
+0

Puede ser difícil obtener una constante de VBA de otro proyecto de VBA debido a restricciones de seguridad. – AMissico

+0

No tiene que ser otro proyecto de VBA. Puede ser un archivo, una URL o prácticamente cualquier cosa. – Wernight

+0

Es por eso que recomendé definir la versión como una propiedad de documento personalizada. Dado que la propiedad es parte de la "Información resumida", puede utilizar la aplicación de alojamiento, COM/OLE, Windows Explorer o los numerosos otros métodos para acceder a la propiedad. Más importante aún, cualquiera puede verificar la versión con Windows Explorer cuando sea necesario. – AMissico

0

Una solución sencilla sería:

  1. tienda un número de versión somwhere en el libro (en una hoja oculta, por ejemplo, por lo que no va a conseguir eliminado accidentalmente) o como una variable.
  2. Almacene un archivo de texto con el último número de versión en su recurso
  3. Incluya una macro que lea automáticamente el último archivo de versión de texto y compare el número de versión con el del libro en ejecución actualmente. Si es demasiado viejo, solo muestre un cuadro de mensaje (indicándole al usuario que actualice) y cierre el libro de trabajo.

Estoy usando un enfoque similar y funciona bien.

Cuestiones relacionadas