ms access - varias - cómo exportar macros de datos de Access 2010
macro para importar txt a access (5)
Necesito transferir las macros de acceso de datos desde mi prueba db a mi producción db. ¿Alguien sabe cómo hacer eso?
Sé que la transferencia de tablas de un accdb a otro también transferirá las macros de datos, pero esa no es una opción en mi caso. También sé que puedo recrearlos manualmente en el acdb de producción, pero eso me deja abierto a errores y requiere tomar la base de datos de producción por un tiempo más prolongado que un escenario de transferencia con guiones.
Si tuviera que hacer esto una vez, no sería tan importante, pero tendré que hacerlo muchas veces en el transcurso de un proyecto de desarrollo.
Intenté exportar las tablas a xml, pero las macros de datos no están incluidas.
Tenga en cuenta que estoy preguntando sobre las macros de datos de Access 2010 aquí, no sobre las macros de acceso habituales.
Es posible que desee probar un par de funciones de VBA sin documentar
Exportar:
SaveAsText acTableDataMacro, "TableName", "C:/PathToFile/DataMacro.xml"
Importar:
LoadFromText acTableDataMacro, "TableName", "C:/PathToFile/DataMacro.xml"
Haga clic derecho en la macro y elija Export
y luego elija la base de datos que recibirá la macro.
No tengo una gran respuesta aquí.
Sin embargo, en el pasado, a menudo hacía un "libro de registro" de cambios en las tablas y luego lo usaba simplemente en el sitio.
Tenga en cuenta que puede cortar + pegar código macro. Y el código se guarda como XML.
Por ejemplo, esto después de la activación de la tabla de actualización se ve así en Access:
Si recorta lo anterior (ctrl-a, ctrl-cc) ,, entonces puede pegarlo en un bloc de notas. De hecho, puedes incluso pegar / abrirlo en Visual Studio o cualquier editor xml, y ves esto:
Entonces puedes cortar + pegar fuera de esas macros.
Como se señaló, en el pasado a menudo mantenía un "registro" de cambios.
Entonces, si estaba trabajando fuera del sitio y modifiqué 2 módulos de código, 4 formularios y 2 informes, tuve un pequeño registro de cambios. Escribiría en esta hoja qué objeto fue cambiado.
Cuando llego al sitio, echo un rápido vistazo a esa hoja y sé que debo importar los 3-5 objetos, y esa importación solo dura unos minutos.
Sin embargo, con los desencadenadores de tabla y los procedimientos de almacenamiento, puede tener más que unos pocos para copiar.
Yo haría una de dos cosas:
Use la idea de registro y
a) Elimine la publicación de la versión de desarrollo y tráigala conmigo a su sitio de trabajo. A continuación, importa nuevos formularios, informes, etc. Para el código de activación, corta + pega entre las dos aplicaciones.
b) Cuando realiza un cambio en un desencadenador, corte y pegue en un bloc de notas y colóquelos en un directorio. Cuando esté en el sitio, simplemente tome cada bloc de notas, corte + pegue en la producción y luego mueva o copie el elemento del bloc de notas en una carpeta "hecho".
Lo anterior es ciertamente menos que ideal. Por otra parte, en el pasado no siempre tenía el código para escribir un cambio de tabla, y usar una pequeña hoja de registro funcionaba bastante bien.
En el pasado, a menudo escribía que tal y tal tabla se modificó y tengo que agregar tal o cual columna.
Por lo tanto, realmente es su elección si desea cortar + pegar el código macro como xml en pequeños documentos separados, o cortar + pegar directamente del desarrollo en producción.
Creo que si trabajas en una ubicación diferente, entonces creo que es mejor deshacer la publicación de la versión de desarrollo, y llevar eso contigo (supongo que sabes que puedes hacer una copia no publicada de una aplicación web) .
Por lo tanto, los formularios, los módulos de código, las macros, etc. pueden importarse fácilmente (se eliminan los formularios, etc., y solo se importa desde esa copia no publicada).
Sin embargo, para el código de la tabla? Tienes que cortar + pegar desde esa copia no publicada, de a una por vez, en algún área de preparación, o como se indica cortar + pegar entre las aplicaciones.
Existe la posibilidad de que el texto para guardar pueda funcionar aquí, pero todavía no tuve tiempo de preparar una solución mejor.
Editar: Por cierto, en la parte superior asumí una base de datos de servicios web, pero el consejo todavía se aplica a las bases de datos de acceso no web.
Para ampliar la respuesta de Martijn Pieters / Lanik (gracias a Martijn y Lanik), tuve la necesidad de crear virtualmente las mismas macros de datos en 28 tablas diferentes, con una macro de AfterInsert, AfterUpdate, AfterDelete y datos nombrados en cada una. Entonces, utilicé el comando SaveAsText
SaveAsText acTableDataMacro, "TableName", "C: / PathToFile / DataMacro.xml"
para crear una plantilla, luego usé esa plantilla para crear los 28 archivos xml a través de un pequeño código vba, sustituyendo los nombres de las tablas, las claves principales, etc. También creé 28 comandos LoadFromText. Podría usar los comandos LoadFromText para cargar todas las macros a la vez, con un proceso repetible. Ahora que ya terminé las pruebas, puedo actualizar rápidamente la base de datos de producción de esta manera o agregar fácilmente las mismas macros de datos a otras tablas.
Para que otros lo sepan, LoadFromText sobrescribe cualquier macro anterior, lo cual es fantástico, ya que no tenía mi plantilla correcta en el primer intento.
Dado lo anterior, el siguiente paso es hacer que su aplicación de base de datos ''updater'' use un comando DoCmd.TransferDatabase para transferir el módulo con una función / sub con todos los comandos LoadFromText a los datos .accdb. También debería transferir una macro para ejecutar la función / sub. Intenté que mi actualizador ejecutara la macro para cargar las macros de datos, pero la seguridad de acceso lo impidió. por lo tanto, es posible que necesite que su usuario abra la base de datos y habilítelo, luego ejecute la macro. Esto es más intrincado si pudiéramos editar las macros de datos directamente, pero proporciona una solución alternativa que resuelve el problema.
Tuve el mismo problema al no poder encontrar la macro correcta para exportar en formato xml. Sin embargo, pude hacer clic derecho en mi consulta y exportar a XML de esa manera, así que sabía que era posible.
Sin embargo, quería que se ejecutara desde un botón y encontré una manera simple de hacerlo sin escribir ningún código vba.
Primero necesita exportar su tabla o consulta manualmente haciendo clic derecho en su tabla o consulta y seleccionando exportar y seleccionando xml como el tipo de archivo. Al final puede guardar los pasos de exportación, simplemente marque la casilla para guardar los pasos y dé un nombre apropiado a los pasos de exportación. Una vez que haya hecho esto, puede ejecutar los pasos de exportación a través de una macro utilizando la acción RunSavedImportExport. Simplemente seleccione el nombre de la exportación guardada que creó cuando exportó manualmente. Trabajo hecho. Espero que esto ayude a otros.