Mandar campos de un formulario a una plantilla word

Estimado Experto.
-Tengo abierto un formulario de access y en él un botón de comando cuya función, intento sea, mandar los campos del formulario a una plantilla de Word.
-La plantilla tiene dos marcadores "campofecha" y campoperiodo" con el objetivo de sobreescribir sobre la plantilla de Word el valor de los campos "fecha" y "periodo" del formulario.
-Al pinchar en el botón se accede a la siguiente subrutina de visual.
1º)
# defino un objeto word y dos marcadores "campofecha " y campoperiodo dentro de su sentencia with"
Dim appword As New Word.Application
With appword
.Documents.Add "c:\copiageriasistencia\plantillafactura2"
.ActiveDocument.ShowSpellingErrors = False
.Selection.Goto wdGoToBookmark, Name:="campofecha"
.Selection.Goto wdGoToBookmark, Name:="campoperiodo"
.Visible = True
End With
#Copio todos los registros del formulario en la variable rst
Dim rst As DAO.Recordset
Set rst = Forms!FACTURA.Recordset.Clone
# mando el valor de los campos del formulario fecha y periodo a la plantilla
appword.Selection.TypeText rst!Fecha
appword.Selection.TypeText rst!PERIODO
2º) el problema es que solamente reconoce el último de los marcadores definidos en la sentencia with "campoperiodo", a continuación del cual imprime ambos valores el del campo fecha y el del campo periodo.
Del formulario.
3º) No se que instrucciones tengo que definir en el bloque with para definir varios marcadores y mandar a cada marcador el valor de su correspondiente campo.
Muchas gracias.

1 respuesta

Respuesta
1
Sin entrar en detalle, porque nunca me he tenido que pelear con eso, me parece que hay algo que no encaja.
Primero seleccionas el campofecha --> es el valor de appword. Selection pero no haces nada, porque justo a continuación asignas el valor a el Bookmark campoperiodo.
Después abres un recordset... yo creo que debería abrirse antes. De hecho ni creo que sea necesario; podrías hacer referencia a los campos del formulario.
Y al final asignas los valores... que van al mismo sitio (la ultima selección de appword. Selection -> campoperiodo) y dónde solo de asignará el valor de rst! PERIODO, ya que se 'machacara' la asignación anterior.
Esto, y te repito que no lo he probado, debería funcionar:
With appword
.Documents.Add "c:\copiageriasistencia\plantillafactura2"
.ActiveDocument.ShowSpellingErrors = False
.Selection.Goto wdGoToBookmark, Name:="campofecha"
.Selection.TypeText Me!Fecha
.Selection.Goto wdGoToBookmark, Name:="campoperiodo"
.Selection.TypeText Me!PERIODO
.Visible = True
End With
Si quieres más opiniones te sugiero que pases por http://www.mvp-access.com/foro. Ahí hay gente que sabe muchísimo más que yo sobre eso. Si lo haces me apuesto algo a que recibes una respuesta del moderador prga, que es un crack de esto.
Muchas gracias, parece que funciona.
Me he dado cuenta de que tengo un nuevo problema. Te estaré muy agradecido si me vuelves a ayudar.
Una vez que se ha realizado la fusión de los campos del formulario en la plantilla de word, se abre el fichero y el control vuelve al operador.
-Necesito que el programa por sin mismo cierre el fichero con un nombre definido por una variable tipo string "alfa" y guardarlo en un directorio que se llama c:\geriasistencia.
- Una vez guardado allí necesito abrir dos opciones:
       1º) usando docmd.sendobjet(ObjectType, ObjectName, OutputFormat, To, Cc, Bcc, Subject, MessageText, EditMessage, TemplateFile)
        Poner el fichero en la bandeja de correo y mandárselo a un destinatario.
        El problema que tengo es que no se cual es el "objecttype" del fichero generado
Y guardado en c:\geriasistencia.
      2º) La segunda consistiría en abrir el fichero guarado en c:\geriasistencia con word
     Por si el operador lo quiere ver.
Si me puede
. másEn el caso de
.
Veo que ya has realizado la pregunta en el otro foro. Prefiero seguir ahí, hay más opciones de respuesta (como ya habrás podido comprobar)
Xavi

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas