Gestión de subdocumentos de Word desde VBA Access

En primer lugar agradecerte tu disponibilidad.
Estoy preparando una base de datos que gestiona, entre otras cosas, archivos relacionados con determinadas materias.
Una de las estrategias que pretendo aplicar es trabajar con un documento maestro de word, añadiendo sucesivamente subdocumentos que completen la información previa.
No he conseguido, por mas que lo he intentado, añadir subdocumentos al documentos maestro de word desde la programación de Visual Basic de Access.

2 respuestas

Respuesta
1
La verdad es que he trabajado muy poco (por no decir nada) con temas relacionados con Word.
Además de eso, no entiendo tu pregunta. No sé qué quieres decir cuando dices "subdocumentos".
Quizá, si me puedes poner un ejemplo, lo entenderé mejor.
De todas maneras te animo a que sigas buscando ayuda sobre este tema en otras partes. Por supuesto, si me envías las aclaraciones que te solicito, le echaré un vistazo, a ver si sé cómo puede hacerse, pero en este caso no puedo asegurarte una respuesta positiva.
En fin, que uno llega hasta donde llega... ;)
Ya me dirás,
Neckkito
Gracias por tu rápida respuesta.
Una posibilidad de Word es trabajar con un documentos maestro que incluye varios subdocumentos.
Los subdocumentos funcionan como cualquier otro documento de Word, se pueden abrir, modificar, etc.
El documento maestro contienen, entre otras cosas, los enlaces de los subdocumentos.  Este documento puede abrirse con los subdocumentos expandidos o indicando únicamente los enlaces.  Las modificaciones de los subdocumentos se pueden realizar indistintamente, en el documento maestro expandido o abriendo independientemente el subdocumento como un documento normal de Word.
Lo que pretendo es generar nuevos documentos de word desde VB -ya lo hago sin problemas- e incluir estos nuevos documentos como subdocumentos del documento master de word preexixtente.
Muchas gracias y un saludo
He estado investigando qué era esto de los documentos maestros y subdocumentos y bueno... pues que más o menos lo tengo claro.
He estado haciendo pruebas, y lo que he conseguido ha sido un código que, si no te sirve directamente, al menos tendrás una idea de cómo se hace para ver si lo puedes adaptar a tu caso.
El código parte de los siguientes supuestos:
- El documento maestro y los subdocumentos están en el mismo directorio donde está la BD. Si no fuera así deberías indicarle la ruta al asignar valor a las variables miWordMaestro y miSubDoc
- Yo he llamado al documento maestro DocMaestro.docx, y al subdocumento subDoc.docx. Tú debes cambiar esos nombres por los que tengas en tu PC.
- En el código miSubDoc es un valor fijo. No hay inconveniente en construir el valor de la variable miSubDoc a través de una variable que te recoja el nombre del subdocumento que tú hayas generado. Doy por sentado que eso lo sabrás hacer.
- El proceso lo que hace es:
1.- Abre el documento maestro
2.- Se va a la última línea del documento
3.- Inserta el subdocumento
4.- Cierra el Word, guardando los cambios
Te aconsejo que hagas las pruebas sobre una copia de tu documento maestro, no sea cosa que salga algún "churro" y se "espachurre" tu original. ;)
El código, aplicado a un botón de comando, sería el siguiente (te lo he puesto comentado para que veas qué hace cada cosa):
...
Private Sub Comando0_Click()
'Creamos la instancia de Word
Dim Wrd As Word.Application
Set Wrd = CreateObject("Word.Application")
'Cogemos la ruta del documento maestro y del subdocumento
Dim miWordMaestro As String, miSubDoc As String
miWordMaestro = Application.CurrentProject.Path & "\DocMaestro.docx"
miSubDoc = Application.CurrentProject.Path & "\subDoc.docx"
'Abrimos el documento y lo mostramos
Wrd.Documents.Open miWordMaestro
Wrd.Visible = True
'------------Todo este código se desarrolla dentro del Word------
With Wrd
'Nos movemos a la última línea del documento
.Selection.EndKey Unit:=wdStory
'Expandimos los subdocumentos
.ActiveDocument.Subdocuments.Expanded = Not .ActiveDocument.Subdocuments.Expanded
'Aplicamos la adición del subdocumento
.Selection.Range.Subdocuments.AddFromFile Name:=miSubDoc, _
ConfirmConversions:=False, ReadOnly:=False, PasswordDocument:="", _
PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
WritePasswordTemplate:=""
End With
'---------------Volvemos al control de Access-------
'Cerramos el documento maestro, guardando los cambios
Wrd.ActiveDocument.Close wdSaveChanges
Wrd.Quit
'Eliminamos la instancia de Word
Set Wrd = Nothing
End Sub
...
Como ya te comentaba, mi "dominio" de automatización sobre Word no es "deslumbrante", por lo que no me pidas muchas "filigranas" más, porque no sé si sabré responderte.
Lo dicho. Si no te sirve al 100% por lo menos espero que te ayude a solventar tu problemilla.
Muchas gracias por tu esfuerzo e interés.
El comando que me dices : .
Selection.Range.Subdocuments.AddFromFile Name:=miSubDoc, _
ConfirmConversions:=False, ReadOnly:=False, PasswordDocument:="", _
PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
WritePasswordTemplate:=""
Es el que se genera en Word y funciona perfectamente dentro de un macro de word.  Sin embargo, la inclusión de este comando en VBA de Access no tiene efecto, tampoco da error, pero no hace nada.  En algún sitio creo que he leído que el Visual Basic de Word tiene diferencias con el de Access.
Habría forma de "traducir" este comando a VBA de Access?
Muchas gracias y un saludo.
Cuando te pasé el código era porque había hecho pruebas, y a mí sí que me funcionó perfectamente. No entiendo porque no te funciona, a no ser que no hayas puesto el punto delante de Selection. Range. Subdocuments.AddFromFile Name:=miSubDoc, _etc.
Es decir:
.Selection.Range.Subdocuments.AddFromFile Name:=miSubDoc, _ etc.
Efectivamente, el VB de Access con Word tiene diferencias, pero desde el momento que le indicamos
With Wrd
Le estamos diciendo al código que todo lo que se ejecute hasta el End with debe realizarse con "vocabulario" VB para Word.
Si quieres, bájate la BD (Access 2007) que me creé para hacer las pruebas aquí: http://www.filebig.net/files/T9EgUE9L72
Y echa un vistazo a ver si puedes detectar alguna diferencia con tu BD, o con tu doc maestro.
Ya me dirás.
Gracias de nuevo, y lo voy a ar revisar lo que me dices y a probar si funciona.  Pero...
el Access que tengo es 2003,¿Puede ser un problema?
Pues sí, sí va a ser un problema.
Te he convertido todos los archivos que intervienen en el proceso a la versión 2003.
Te lo puedes bajar aquí:
http://www.filebig.net/files/KHYjsiRXPx
A ver si conseguimos que funcione ;)
Esto es lo que se dice trabajar en tiempo real. Muchas gracias.
Lo he probado con la base de datos que has enviado y efectivamente ha funcionado sin problemas.
Lo pasaré a mi base de datos y espero no tener problemas.  Te informaré del resultado.
Muchas gracias por tu dedicación e interés.
Je, je... Si me hubieras dicho: "no me ha funcionado..." me tiro por la ventana! ;))
Bueno... Espero que puedas adaptarlo a tu BD.
Y, por cierto, gracias por enseñarme qué era esto de "documento maestro y subdocumentos"... No tenía ni idea de esta sistemática ;)
Nunca te acostarás sin saber una cosa más
Cualquier cosa me comentas.
Un gran saludo,
Neckkito
Respuesta
1
No te funciona un abrir el subdocumento, ¿leerlo y luego adicionarlo a otro documento que seria el documento maestro?
Hola
Gracias por tu rápida respuesta.
El problema es que no se añadir el subdocumento.
En el manejo normal de un documento maestro en Word, entrando en la vista Esquema, se pueden añadir subdocumentos.
En VBA no he conseguido encontar el comando que me permita añadir un subdocumento adicional
Muchas gracias y un saludo
Abres los dos documentos, el principal y el sub, lees el sub, y lo escribes en el principal, luego grabas el principal.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas