Access - Rellenar un Word o PDF con campos de un Formulario

 
Vista:
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 01/03/2021 21:07:16
Hola buenas, soy nuevo en el Foro y como muchos estoy para pedir ayuda. Ojalá llegue el día en el que pueda prestarla.
Expongo mi problema. Tengo una base de datos en Access que fui actualizando a lo largo de unos pocos años pero ahora quiero hacer cosas que desconozco y por eso pido ayuda.

Tengo una base con tablas y Formularios para llevar la gestión de un Laboratorio.
Me llegan cosas para estudiar acompañadas de unos formularios y a su vez, muchas de esas cosas yo las tengo que remitir a otros sitios acompañadas también de unos documentos, entre ellos un documento de Word, que tengo preformateado y relleno una serie de campos y lo hago en el ordenador.

Cuando me llegan cosas para estudiar las grabo en un Formulario que llamo Registro de Entrada, y se graban como si de fichas se trataran. Cuando llegan les asigno correlativamente un número de carpeta que es el campo principal del formulario o tabla, 001,002,003 etc... en el que relleno unos campos con datos que vienen en la documentación y tengo un subformulario en el que grabo los objetos que me envían analizar. En uno de esos campos guardo toda la documentación en PDF que viene con los objetos.

El caso es que cuando yo tengo que devolver o enviar a otros laboratorios, parte de esas muestras, las acompaña un formulario que tengo en Word, que tiene unos campos mas o menos fijos que los relleno con los datos que previamente grabe en el formulario.

Lo que quiero es poner un botón en el Formulario, para que cuando tenga que hacer el documento de Word, pulsando el botón, se abra el Word y se rellene con los datos de la ficha del formulario que esta activo en ese momento. Después sólo sería cuestión de imprimirlo y guardarlo en PDF para archivarlo en la misma base en otro formulario.
Tengo estas tablas, con sus respectivos Formularios:
- Registro de Entrada (Tabla principal que es la que tiene el ID y se generan las carpetas 001,002,003 etc...)
- Muestras (Aquí grabo los objetos y muestras , todo lo que llega de 001,002,003 etc...)
- Documentación Recibida (Para grabar los documentos que se reciben de cada carpeta 001,002,003 etc...)
- Documentación Enviada ( Lo mismo para lo que yo envío y aquí es donde guardo también el Word)

Tengo otras tablas pero no afectan al Word

Podría hacerlo también con un PDF llegado el caso, si fuese más fácil hacer el proceso, el mismo documento pero en PDF.

Supongo que esto con macros no se podrá hacer, y que tendrá que ser con VB y asignarlo al botón, pero eso no se hacerlo,
Conseguí que cuando doy de alta un número nuevo, en el Formulario, se me cree la carpeta automáticamente 001,002,003 que es donde se va a guardar todo lo relacionado con eso.

Estuve mirando lo de Combinación de Correspondencia con Word, pero eso no me vale, eso es para hacer cartas y eso no me vale, yo sólo quiero hacer una sola y además habría que andar haciéndolo con Word y eso me ralentiza más.

Pregunto si es factible hacerlo.

Sería por ejemplo usar los campos
BASECAMPO01
BASECAMPO02
BASECAMPO03
BASECAMPO04
BASECAMPO05
BASECAMPO06

Y QUE RELLENARAN LOS CAMPOS DE WORD O DEL PDF QUE LLAMARIA IGUAL AL PULSAR EL BOTÓN.
WORDCAMPO01
WORDCAMPO02
WORDCAMPO03
WORDCAMPO04
WORDCAMPO05
WORDCAMPO06

Hasta pensé hacer una imagen del documento y ponerlo de fondo de un formulario y poner los campos que necesito del formulario para que coincidan encima de donde debe ir el texto sobre la imagen

Casi me sale pero hay que hacer muchos ajustes en la imagen para que coincida, pero a falta de otra cosa es lo que tengo hasta ahora.
Pregunto si se puede hacer y si pueden asesorarme,

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (753 intervenciones) el 13/04/2021 15:06:11
Hola:

Puedes abrir el documento de Word desde Access usando

1
2
3
4
5
Dim Wrd As Word.Application, Doc As Word.Document
...
Set Wrd = CreateObject("Word.Application")
Set Doc = Wrd.Documents("nombre del documento")
...

Para escribir en él, debes usar este código:

1
Doc.Fields("nombre del campo").Result.Text = "ValorQueLeQuierasDar"

Por último, guardas el documento y lo cierras y sales de word

1
2
3
Doc.Save
Doc.Close
Wrd.Quit

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 14/04/2021 09:21:19
Gracias por responder, pensé que nunca i9ba a poder hacer algo así.
Lo único es que no me queda muy claro como hacerlo, no se programar más que alguna que otra pequeña cosa.

El código este que pones, se lo tengo que añadir a un botón?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (753 intervenciones) el 14/04/2021 11:11:00
Hola de nuevo:

Te adjunto un archivo para que puedas trabajar a partir de él.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (753 intervenciones) el 14/04/2021 11:12:49
Word no permite referenciar un campo a partir del nombre, sólo del ínidce por lo que la línea

1
Doc.Fields("nombre del campo").Result.Text = "ValorQueLeQuierasDar"

no funcionaría. En su lugar habría que usar un bucle

1
2
3
For Each Fld In Doc.Fields
...
Next
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 14/04/2021 22:14:14
Hola Norberto,

Descargue el programa, muchas Gracias.
Cuando le doy a exportar, se abre el Word y se cierra muy rápido
Como hay que hacer para que se mantenga abierto y no se cierre. Si quiero revisar que esté todo bien cubierto, cada cosa en su sitio y que me de la opción de poder guardarlo en la ficha en la que esta en ese momento 001 / 002 / 003...

Lo de guardarlo no se si guardara ya en la carpeta de la ficha en la que estamos en ese momento que es el campo IDREG, o tengo que buscar la carpeta manualmente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (753 intervenciones) el 15/04/2021 10:12:38
Hola:

Elimina las líneas Doc.Close y Wrd.Quit para que no se cierren ni Word ni el documento.

En cuanto a dónde se va a guardar, puedes usar Doc.SaveAs2 ruta_de_acceso. La ruta la puedes componer concatenando valores. P.E.: Doc.SaveAs2 "D:\Documentación\" & Me.Registro_de_entrada & "\nombre del documento.dotx".

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 15/04/2021 12:05:52
Hay una cosa que no entiendo, como se crean los campos dentro del documento de Word, ya que la opción en el Word de añadir campos la veo desactivada cuando leo tu documento, o no se crean campos en el Word?
Simplemente lee el valor del campo del formulario y lo muestra en el Word?,
Como selecciono en que parte del Word quiero ponerlo.
Como los coloco en distintas partes del documento, no van a ir uno detrás del otro, van a ir repartidos por el documento.
Puedo poner a esos campos el nombre que yo quiera, o tengo obligatoriamente que llamarles a todos los campos con el mismo nombre y numerarlos para que el "IF" pueda recorrerlos?
Puedo poner en la tabla, Nombre, Fecha, Oficina, número Oficina etc... como recorre el IF estos campos, porque veo que pones que Word no permite referirse al campo por el nombre
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 15/04/2021 18:22:30
Espero no abusar de ti

Otra cosa más. Conseguí lo de guardar el documento en la ruta que yo quiero y con el nombre que quiero.
Pero quiero cambiar y que me lo guarde dentro de una carpeta con el nombre del ID de cada ficha.
Cuando doy de alta una ficha, 001/002/003... se genera una carpeta con el mismo nombre 001/002/003... Y quiero que el documento, en función de la ficha en la que estamos en ese momento ejecutando la generación del documento Word, pues lo guarde en la carpeta con el mismo número ID, 001/002/003,

Como concateno eso a la instrucción de guardar el documento. Como pongo que lo guarde en la carpeta con el mismo ID

Doc.SaveAs2 "D:\Documentación\" & Me.Registro_de_entrada & "\nombre del documento.dotx".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (753 intervenciones) el 16/04/2021 09:53:54
Hola de nuevo:

¡Pero mira que os gusta ocultar información!

1. Cómo se llama el campo que contien el ID y, por tanto, el nombre de la carpeta.

2. Dónde se encuentran dichas carpetas (001, 002, 003...). ¿En la misma que la base de datos o en otra? En este último caso, ¿cuál sería la ruta?

3. Qué nombre quieres que tenga el documento guardado con la información fusionada con la bdd. ¿El mismo que el original? ¿Otro? En este último caso, ¿cuál sería el nombre?

Con eso tengo suficiente para ponerte el comando Doc.SaveAs2... tal cual lo vas a necesitar.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (753 intervenciones) el 16/04/2021 09:49:05
Hola:

Los campos de Word los colocas en cualquier parte del documento. Para ello utilizas el comando de la primera imagen y te creará un cuadradito de cuatro espacios en blanco. Le das doble clic para editarlo y en la sección Marcador le pones el nonmbre. Para poder crear los campos e introducir otro tipo de texto el documento debe de estar desprotegido y, para poder rellenarlo, hay que protegerlo como formulario. De esto último se encarga el programita.

Si no tienes visible la persiana Desarrollador, la activas desde la personalización de la cinta de opciones.

Un saludo,

Norberto.

Captura1
Captura2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 16/04/2021 13:20:07
La base de datos tiene Un Formulario Principal llamado "REGISTRO DE ENTRADA", y después hay otro dos formulario llamados DOCUMENTACIÓN ENTRADA Y DOCUMENTACIÓN SALIDA, en Documentación salida, es donde va a ir el Botón para generar el Word.
Tengo un control de pestañas, en la primera está "REGISTRO DE ENTRADA, en la segunda pestaña DOCUMENTACIÓN ENTRADA y en la tercera pestaña DOCUMENTACIÓN SALIDA

Los formulario están relacionados con el formulario Principal por el campo IDREG, cuyo valor el 001, 002, 003...
La idea es que cuando estés por ejemplo dentro de la ficha 003, pulsando el botón que estará dentro del formulario DOCUMENTACIÓN SALIDA que está en la pestaña tres del control de pestañas, se abra el Word y que se rellene con los datos grabados en el Formulario REGISTRO DE ENTRADA, que se mantenga abierto por si hay que hacer algún cambio o imprimirlo y que se guarde una copia de forma automática dentro de la carpeta 003 ( la del registro IDREG)
La base de datos está en una carpeta que se llama BASE DE DATOS 2021, dentro hay una carpeta que se llama DOCUMENTACIÓN, y a su vez, dentro es donde están las carpeta donde se guardan los documentos cada carpeta con el número de la ficha 001, 002, 003 ....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 16/04/2021 21:16:16
No me acorde e ponerlo antes, El nombre del Documento sería "Remisión de Muestras", las carpetas que se generan con el IDREG, 001, 002, 003..., están dentro de la carpeta llamada DOCUMENTACIÓN.

En la carpeta de la base de datos está.

ARCHIVO: Base de Datos.accdb
CARPETA: Documentación / 001
002
003
etc...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 17/04/2021 01:23:08
Estoy haciendo pruebas con un documento en blanco, antes de meterme de lleno con el documento definitivo, y por lo que veo en la base de ejemplo que me enviaste, entiendo que todos mis campos del formulario principal que van ser utilizados para rellenar el Word, deben estar numerados?

AGENTE01
FECHA DE ENTRADA02
NUMERO REGISTRO03
REMITENTE04
NÚMERO REFERENCIA05
OFICINA DE REFERENCIA06
ETC....

La lectura del nombre del campo, que lo hace, de la etiqueta o del nombre del cuadro de texto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (753 intervenciones) el 19/04/2021 09:19:50
Hola de nuevo:

Para construir la ruta completa del nombre del documento a guardar usa esto:

1
2
3
4
5
6
7
8
...
    i = InStrRev(CurrentDb.Name, "\") 'Buscamos el último separador (\) del nombre completo de la BdD.
    Doc.SaveAs2 Left(CurrentDb.Name, i) & "Documentación\" & Me.IdReg & "\Remisión de Muestras.docx"
    '           ----------------------- & ---------------  & -------- &  --------------------------
    '           "X:\Ruta de la BdD\     &  Documentación\  & 001      &  \Remisión de Muestras.docx
 
    MsgBox "La exportación se ha llevado a cabo correctamente"
...

En las dos líneas comentadas puedes ver cómo se concatenan unas partes de la misma que tenemos que obtener de la propia aplicación, con otras que son literales. Estas últimas van entrecomilladas y las otras no para que VBA las evalúe y extraiga la información correspondiente a la expresión.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 22/04/2021 11:45:37
Me estoy liando no consigo que me funcione:

Entiendo que tengo que sustituir esto:

1
2
3
MsgBox "La exportación se ha llevado a cabo correctamente"
 
Doc.SaveAs2 "D:\RellenarcamposWord\" & Me.Id & "EnvioSeCRIM.docx"


por esto que pusiste arriba:

1
2
3
4
5
6
i = InStrRev(CurrentDb.Name, "\") 'Buscamos el último separador (\) del nombre completo de la BdD.
    Doc.SaveAs2 Left(CurrentDb.Name, i) & "Documentación\" & Me.IdReg & "\Remisión de Muestras.docx"
    '           ----------------------- & ---------------  & -------- &  --------------------------
    '           "X:\Ruta de la BdD\     &  Documentación\  & 001      &  \Remisión de Muestras.docx
 
    MsgBox "La exportación se ha llevado a cabo correctamente"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 22/04/2021 12:12:36
Hola:

Te pongo el código completo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Private Sub cmdExportar_Click()
    On Error GoTo cmdExportar_Click_Err
    'Definimos la ruta en la que se encuentra el documento de Word que sirve de plantilla
    Const RutaDocs = "..." 'Pon la que proceda
 
    'Definimos la variables. La referencia a Microsoft Word xx.xx Object Library debe de estar activada
    '(Herramientas->Referencias...)
    Dim Wrd As Word.Application, Doc As Word.Document, Fld As Word.Field
 
    Dim i As Integer, x As String, Ruta As String
 
    'Creamos el objeto Word
    Set Wrd = CreateObject("Word.Application")
    Wrd.Visible = True
 
    'Abrimos el documento
    Set Doc = Wrd.Documents.Open(RutaDocs & "Documento Rellenable.docx")
 
    If Doc.ProtectionType <> wdAllowOnlyFormFields Then
        'Protegemos el documento para poder rellenarlo
        If Doc.ProtectionType <> wdNoProtection Then
            Doc.Unprotect
        End If
        Doc.Protect wdAllowOnlyFormFields
    End If
 
    'Para cada campo
    For Each Fld In Doc.Fields 'Word no permite referirse a un campo por el nombre
        'Obtememos el nombre del campo
        x = Fld.Result.Bookmarks(1).Name
        'para referirnos al campo equievalente de la BdD
        Fld.Result.Text = Me.Controls(x)
    Next
 
    'Vamos a guardar el documento rellenado donde procede
    i = InStrRev(CurrentDb.Name, "\") 'Buscamos el último separador (\) del nombre completo de la BdD.
    'Obtenemos la ruta de la carpeta en la que se va a guardar el documento
    Ruta = Left(CurrentDb.Name, i) & "Documentación\" & Format(Me.IdReg, "000") & "\"
    Doc.SaveAs2 Ruta & "Remisión de Muestras.docx" 'Guardamos el documento
    MsgBox "La exportación se ha llevado a cabo correctamente"
 
    Exit Sub
 
cmdExportar_Click_Err:
    MsgBox "Se ha producido un error " & Err & " '" & Err.Description & "' en el proceso de exportación."
    Resume
    Set Doc = Nothing
    Set Wrd = Nothing
    Set Fld = Nothing
End Sub

Tal y como te lo he puesto ahora los nombre de los campos de la tabla y del documento deben de ser iguales y no tienen por qué acabar en un valor numérico. También asumo que la carpeta Documentación y las subcarpetas 001, 002, 003... están dentro de la carpeta en la que se encuentra al BdD.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 22/04/2021 13:17:24
Me sale un error.
Y de paso pregunto sobre la ruta que esta en la línea de arriba. Tengo que poner la ruta de la carpeta donde está el documentos o la ruta de la carpeta y el nombre del documento
Documentación\
Documentación\Remisión_Indicios.docx

Captura
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 22/04/2021 13:58:12
Hola:

Pensé que te había contestado también a esta duda. No, no es necesario que acaben en número siempre y cuando los campos del documento de Word se llamen igual que los de la tabla de la BdD. Así que puedes llamar a los campos de la tabla

AGENTE
FECHA DE ENTRADA
NUMERO REGISTRO
REMITENTE
NÚMERO REFERENCIA
OFICINA DE REFERENCIA
...

y a los campos de Word les pones el mismo nombre con un matiz: al no poder llevar espacios en blanco deberás sustituirlos por otro carácter, p.e. el guión bajo (_). En ese caso la línea 30 del anterior post quearía así:

1
x = Replace(Fld.Result.Bookmarks(1).Name, "_", " ")

Otra limitación (que acabo de comprobar) es que los nombres de los campos de Word no pueden superar los 20 caracteres por lo que OFICINA DE REFERENCIA no pudede llamarse así.

Un saludo,

Norberto.

P.S. Te adjunto de nuevo la BdD con todos los cambios.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 22/04/2021 14:05:01
Hola:

Este error te da porque no has marcado la referencia tal y como se indica justo en la línea que tienes encima. Vas al menú Herramientas, comando Referencias..., en la lista buscas Microsoft Word xx.x Object Library, donde xx.x es tu versión de Office, y la marcas.

Un saludo,

Norberto.


Captura
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 22/04/2021 14:14:51
Hola:

Te adjunto de nuevo la BdD con todos los cambios pertinentes. Observarás que los campos se llaman tal y como tú querías (sin ponerles ningún número) pero con la salvedad de que en Word los espacios en blanco están sustituidos por guiones bajos y que a OFICINA DE REFERENCIA le he quitado el DE porque Word no adminte nombres de más de 20 caracteres. Si el nombre de algún otro campo de la tabla supera esa longitud, deberás acortarlo.

Un saludo,

Norberto.

P.D. Te he incluido un módulo con un comando llamado xMkDir para crear las carpetas. Si la carpeta ya existe no da error y si falta alguna de las anteriores las crea. En el entorno de Visual Basic vas al menú Archivo, comando Importar archivo..., lo buscas y lo importas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 22/04/2021 19:05:27
De donde lee Word el nombre de los campos, del nombre de la Etiqueta del campo?, del Título de la Etiqueta del campo?
Del nombre del Campo?, del nombre de Etiqueta del Campo, o del Origen del Control?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 23/04/2021 10:13:20
Hola:

Word no lee, Access escribe en el documento. Concretamente en estas líneas:

1
2
3
4
5
6
7
...
    For Each Fld In Doc.Fields 'Word no permite referirse a un campo por el nombre
        'Obtememos el nombre del campo
        x = Fld.Result.Bookmarks(1).Name
        'para referirnos al campo equievalente de la BdD
        Fld.Result.Text = Me.Controls(x)
    Next

Para cada campo que hay en el documento
Ponemos en X su nombre (que será el mismo que en la BdD)
Y le colocamos el contenido que tiene en la tabla.

Eso sí, los campos de Word deberás de introducirlos a través de los controles de Formularios heredados y no Active X, tal y como te indiqué en su momento.

607940ab23c79-Captura1

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 23/04/2021 13:29:54
Abusando de tu generosidad y tu sabiduría, a ver si me puedes solucionar este otro problema. No se si ponerlo en un POST nuevo o merlo aquí.
En mi formulario principal llamado Registro de Entrada, tengo un campo HIPERVÍNCULO, para cargar un documento PDF.
Tengo que pulsar con el botón derecho del ratón, dentro del campo para que me salga el menú y seleccionar Hipervínculo/Modificar Hipervínculo y poder seleccionar el PDF que quiero cargar.
Como puedo hacer para crear un botón que me cargue en ese campo Hipervínculo, el PDF, en lugar de tener que estar seleccionando con el botón derecho y buscar el menú que me permite seleccionarlo.
Además, me gustaría qué por defecto, al pulsar el botón me abriese primero la carpeta H:\SCANNER\LAB\
Que es la carpeta donde me guarda el scanner los documentos escaneados
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 23/04/2021 13:46:54
Los campos en ACCESS tienen dos nombre, el campo propiamente dicho y su etiqueta, cuando creo los campos en Word a través de los controles de Formularios Heredados, tengo que ponerle un nombre a cada campo que creo en la propiedad Marcador.
Aquí es donde yo me refiero, con que nombre tengo que poner, porque en algunos casos en ACCESS tengo la etiqueta con un nombre y el campo con otro
por ejemplo:

ETIQUETA: FECHA DE ENTRADA y el nombre del campo FECHA ENTRADA

Entonces cuando creo el campo en Word, en la propiedad marcador, cual pongo de los dos, porque estoy teniendo problemas con algún campo creado, que no me reconoce el nombre.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 23/04/2021 21:42:14
Lo de las Etiquetas ya lo tengo solucionado.

Además de lo del botón, para cargar el documento en el campo Hipervínculo, tengo otra pregunta:

Cuando genero el Word con los campos del formulario, como se hace si alguno de los campos está en otro Formulario.
O sea, que el documento de word contiene campos de dos formulario. Como se refiere cuando se crea el campo en el Word, de que formulario tiene que leer el dato que tiene que representar.
Si creo todos los campo para que lea de formulario principal en el que está el botón, no tengo problemas, pero si quiero añadir un campo que esta en un formulario que esta dentro de un control de pestaña, se puede hacer??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 26/04/2021 09:33:20
Hola:

El nombre que debe de tener el marcador del campo de Word es el que tiene el campo de la tabla de la BdD. La etiqueta es un control independiente que sirve para que el usuario sepa qué debe de introducir en el cuadro que la acompaña. Cuando insertas un campo de la tabla "Origen de datos" en un formulario, Access inserta dos controles distintos: un cuadro de texto (o un cuadro combinado, en su caso) y una etiqueta. Al cuadro (que estará vincualdo con un campo de la tabla) le da el mismo nombre que el origen del control (el campo de la tabla), a la etiqueta el da el nombre combinando el nombre del campo y la palabra "Etiqueta" y en su título (propiedad Caption) pone el nombre del campo o la descripción si la tuviera.

Cuando queremos sacar la información para ponerla en el documento de Word tenemos que buscar los cuadros de texto (o combinados) según el nombre que tienen los campos de la tabla.

En resumen: Pon los nombres de los campos de la tabla de una manera sencilla (cumpliendo las limitaciones de Word: no espacios en blanco y máximo 20 caracteres) y usa la propiedad "Descripción" para "humanizarlos", da a los marcadores de los campos en Word los mismo nombres que tienen en la tabla.

Captura
Captura1
Captura2

Así no deberías tener ningún problema.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 26/04/2021 10:40:33
Hola:

Los campos que están en una u otra pestaña están, realmente, en el formulario por lo que no tendrías problemas. Otra cosa sería que estuviesen en un subformulario. Ahí la cosa se complicaría.

Un saludo,

Norberto.

Captura
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 26/04/2021 11:42:55
Si. La verdad es que son campos que están en El control de pestañas pero pertenecen a otro formulario
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 26/04/2021 12:10:36
Hola:

Junto al cuadro de texto del campo hipervínculo pones un botón y le llamas cmdAbrirPDF. Para el evento Al hacer clic pones este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub cmdAbrirPDF_Click()
    Dim myDlgBox As FileDialog, N As Integer, Doc As String
 
    Set myDlgBox = FileDialog(msoFileDialogFilePicker)  'Creamos un objeto FileDialog
    With myDlgBox
        .InitialFileName = "H:\SCANNER\LAB\" 'Definimos la ruta inicial
        .AllowMultiSelect = False           'Indicamos que solo se puede elegir una archivo
        For N = 1 To .Filters.Count         'Eliminamos los filtros de archivo
            .Filters.Delete 1
        Next
        .Filters.Add "Documentos de Adobe Acrobat", "*.pdf" 'Añadimos el filtro de archivo para los PDF
        .Filters.Add "Todos los archivos", "*.*"             'Añadimos el filtro de archivo para todos los documentos
        If .Show Then   'Si seleccionamos algún archivo
            Doc = .SelectedItems(1)   'Guardamos su nombre en una variable
            'Construimos el vínculo y lo asignamos al campo correspondiente
            Me.DocumentoPDF = "..." & Mid(Doc, InStrRev(Doc, "\")) & "#" & Doc & "#"
        End If
    End With
 
    Set myDlgBox = Nothing
End Sub

En la línea 16 deberás cambiar DocumentoPDF por el nombre que le hayas dado tú al campo.

Deberás activar esta referencia:

Captura

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 26/04/2021 20:36:21
Genial, funciona perfectamente, eres una maquina del código.
Seguro que alguna cosilla mas te preguntaré sobre lo del Word, lo estoy complicando un poquillo de más
Al tener unos campos en el formulario principal y otros en el subformulario dentro de una pestaña, se complica la cosa. Sólo me salen los campos del formulario principal, y además como tengo los nombres de los campos con espacios, algunos campos me van y otros no, tengo que restructurar las tablas, quitarle los espacios a los nombre y despues ya en las etiquetas le pongo el nombre que quiera, será lo mejor.

Muchas gracias, un saludo
Francisco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 27/04/2021 09:45:38
Hola de nuevo:

Efectivamente, deberás de adaptar los nombres según los criterios de Word. Le he dado una vuelta a lo del subformulario y tengo una idea sencilla para resolverlo. Se trataría de que en el documento de Word los campos cuyo contenido provenga del subformulario lleven un marcador que comience por un carácter especial (por ejemplo el guión bajo "_"). En la tabla no llevarían este carácter.

Es decir, si el campo "Previsión" está en el subformulario, en el documento de Word, y solo en el documento, se debería de llamar "_Previsión". Luego habría que cambiar un poco el código para que interprete ese carácter. Si me dices cómo se llama el subformulario (el nombre que tiene el control dentro del formulario principal) te pongo el código exacto que deberías poner.

Un saludo,

Norberto,.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 27/04/2021 16:25:52
El documento de Word, es un documento que pueden firmar tres personas distintas
El Formulario Principal se llama: Registro Entrada, de este formulario principal voy a utilizar los campos:
SREF
NREF
FECHA
UNIDADUNO
REGISTRO
UNIDADREGISTRO
CONCEPTO
JUZGADO
PROCEDIMIENTO
NUMERO
IMS
El problema viene ahora, ya que los campos que me faltan por poner en el documento de Word, se encuentran en otras tablas, en concreto de cinco tablas distintas. Son CINCO campos a mayores de los que están en el formulario principal.
Pero los campos de estas cinco tablas, los tengo metidos, dentro de un subformulario que es el que está en una de las pestañas del control de pestañas que ya te comenté.
La pestaña del control de pestañas, se llama “Documentos de Salida” y en esa pestaña hay un subformulario llamado “ SubforDocSalida”, en este subformulario es donde están los campos que me faltan para rellenar el Word.
Los campos de este subformulario que necesito, se llaman:

DESTINATARIO
CIUDAD
DEPARTAMENTO
FIRMANTE
TIP

A ver si puedes hacer algo con eso. Muchas Gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 27/04/2021 20:26:38
No me acorde de decirte que el campo Clave principal del Formulario Principal es IDLAB y de los subformularios, también es IDLAB.
El subformulario SubforDocSalida tiene su campo principal IDLAB también.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 28/04/2021 13:43:20
Hola:

Lo que te comenté en el post anterior.

En el documento llamas a los campos que van a salir del subformulario de la siguiente manera:
_DESTINATARIO
_CIUDAD
_DEPARTAMENTO
_FIRMANTE
_TIP
Pero solo en el documento, en las tablas los dejas tal cual.

En el código sustituyes todo el bucle For Each...Next por este nuevo (desde la línea 2).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
...
    'Para cada campo
    For Each Fld In Doc.Fields
        'Obtememos el nombre del campo
        x = Fld.Result.Bookmarks(1).Name
        'para referirnos al campo equievalente de la BdD
        If Left(x, 1) = "_" Then    'Si comienza por "_" está en el subformulario
            x = Mid(x, 2)           'Quitamos el primer carácter
            Fld.Result.Text = Me.SubforDocSalida.Form.Controls(x)   'Y ponemos su valor que
                             'está en el subformulario
        Else
            'Ponermos el valor que está en el formulario principal
            Fld.Result.Text = Me.Controls(x)
        End If
    Next

Lo pruebas y me dices algo.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 28/04/2021 17:55:42
No me funciona. Me salen todos los campo del Formulario, pero no me salen los del subformulario. Me sale una ventana de error.
Lo que me di cuenta, es que cuando creo los campos en el documento de Word, los campos que se corresponden con el Formulario, aparecen como una casilla de color gris con dos corchetes [ ], pero cuando creo los campo que se corresponden con el subformulario, aparece el campo de color gris pero no aparecen los corchetes [ ]. Los campo los creo de la misma forma, salvo que los del subformulario le añado el guión bajo delante del nombre _DESTINATARIO

Si le quito el guion bajo al nombre, entonces vuelven a aparecer los corchetes [ ]

Recuerda que los campos están dentro de un control de pestañas, no se si eso influye en la detección de los campos, Te mando una foto del control de pestañas que esta dentro del formulario principal y de la ventana del error.

8ff67763383c2290f103c27df4a79007o

3a69f687b68b6e4d55fc855839e981fco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 28/04/2021 20:15:00
No entiendo el concepto de como funciona el guion bajo, y como se identifica cual es el campo que tiene que mostrar el Word, porque busca en ese Subformulario y no en otro, porque en el control de pestañas, en cada pestaña hay un subformulario, o sea que hay en total tres subformulario.
Bueno perdón en dos pestañas hay dos subformularios.
Que es lo que identifica en que subformulario tiene que buscar el campo. Porque lo busca en ese y no en otro.
Por lo que veo, o lo que deduzco que pones en código, si detecta que hay un guion bajo, sabe que está en el subformulario.

Pero claro en la primera pestaña hay un subformulario, en la segunda pestaña hay dos subformularios y en la tercera pestaña que es la que nos interesa, hay otros dos subformulario, uno que contiene los campos que van a ir en el Word, y después hay otro que es un subformulario con un resumen de todos los documentos subidos.

No se si al final, será mejor quitar el control de pestañas, y poner botones que habrán los formularios, o poner los campos que me interesan para el word, todos en el formulario principal.
Prefería tenerlos en el campo de documentación Salida, por que tienen que ver con la salida y no con el Registro de Entrada.
Espero que no se te complique mucho la cosa.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 28/04/2021 21:13:24
Me colé, ya vi que si se especifica el subformulario Me.SubforDocSalida
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 29/04/2021 10:08:33
Hola:

No entiendo lo de los corchetes.

Captura1

Ni que no uses la opción Subir Imágenes propia del foro

Captura2

Si puedes poner todos los campos en el formulario principal, fenómeno. El que estén en un control de pestañas no influye, ya que a todos los efectos se consideran que están en el propio formulario.

Aun así tendría que funcionar con subformularios y no tendría que influir el guión bajo en el nombre del marcador del campo en el documento de Word.

Mándame un pantallazo de Word como la primera de mis dos imágenes a ver si me aclaro.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 29/04/2021 10:54:49
Cuando creo un campo que esta en el formulario, creo un campo con el botón "Campo de texto (Control de formulario), se abre la ventana de opciones del campo y le pongo el nombre, por ejemplo JUZGADO.

En el documento de Word aparece el campo con una sombra GRIS, con un corchete, como ves en la imagen, no me aparece igual que a tí con los asteriscos.

Hago lo mismo para todos los campos, pero cuando me toca hacerlo para el campo que está en el subformulario, le pongo el guion bajo y el nombre
_DESTINATARIO, y como puedes ver en la imagen del documento de word, aparece la misma sombra de color gris pero sin los corchetes, cosa que me llama la atención.

La diferencia de poner el guion bajo a no ponerlo son esos corchetes, no se de donde salen, yo no los pongo. Aparecen cuando pulso el botón de Campo de texto (Control de formulario)
Veo que a ti te salen unos asteriscos.

Total que si están los corchetes parece que funciona y sino están no funciona ese campo.


Captura2
Captura3
Captura4
error-1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 29/04/2021 11:53:17
Hola:

Los corchetes tienen que ver con esto:

c569f446-4de1-4e7d-9df2-76f2d347f3a1

Y en el que lleva el guión bajo no salen porque es el carácter que indica que es un marcador oculto, pero eso no debería afectar a nuestra cuestión. Me inclino a pensar que el problema está en la referencia al subformulario.

En la línea
1
Fld.Result.Text = Me.SubforDocSalida.Form.Controls(x)

pones

1
Fld.Result.Text = "HOLA" 'Me.SubforDocSalida.Form.Controls(x)
(No te olvides del poner el apóstrofo (') delante del Me.)

Si sigue dando el error el problema estaría en el marcador de esos campos y si les pone "HOLA" estaría en la parte Me.SubforDocSalida.Form.Controls(x).

Pruébalo y me dices.

Un saludo,

Norberto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 29/04/2021 14:31:31
Donde lo pongo, la línea que me dices, yo ya la tenía distinta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Private Sub Comando92_Click()
 
    On Error GoTo cmdExportar_Click_Err
 
    'Definimos la variables. La referencia a Microsoft Word xx.xx Object Library debe de estar activada
    '(Herramientas->Referencias...)
    Dim Wrd As Word.Application, Doc As Word.Document, Fld As Word.Field
    Dim i As Integer, x As String, Ruta As String
 
    i = InStrRev(CurrentDb.Name, "\") 'Buscamos el último separador (\) del nombre completo de la BdD.
    'Obtenemos la ruta de la carpeta en la que se va a guardar el documento
    Ruta = Left(CurrentDb.Name, i) & "Documentación\"
 
 
    'Creamos el objeto Word
    Set Wrd = CreateObject("Word.Application")
    Wrd.Visible = True
 
    'Abrimos el documento
    Set Doc = Wrd.Documents.Open(Ruta & "Remisión_Indicios.docx")
 
    If Doc.ProtectionType <> wdAllowOnlyFormFields Then
        'Protegemos el documento para poder rellenarlo
        If Doc.ProtectionType <> wdNoProtection Then
            Doc.Unprotect
        End If
        Doc.Protect wdAllowOnlyFormFields
    End If
 
     'Para cada campo
    For Each Fld In Doc.Fields
        'Obtememos el nombre del campo
        x = Fld.Result.Bookmarks(1).Name
        'para referirnos al campo equievalente de la BdD
        If Left(x, 1) = "_" Then    'Si comienza por "_" está en el subformulario
            x = Mid(x, 2)           'Quitamos el primer carácter
            Fld.Result.Text = Me.SubforDocSalida.Form.Controls(x)   'Y ponemos su valor que
                             'está en el subformulario
        Else
            'Ponermos el valor que está en el formulario principal
            Fld.Result.Text = Me.Controls(x)
        End If
    Next
 
'    Para cada campo
'    For Each Fld In Doc.Fields 'Word no permite referirse a un campo por el nombre
'        Obtememos el nombre del campo
'        x = Replace(Fld.Result.Bookmarks(1).Name, "_", " ")
'        para referirnos al campo equievalente de la BdD
'        Fld.Result.Text = Me.Controls(x)
'    Next
 
    Ruta = Ruta & Format(Me.IDLAB, "000") & "\" 'Añadimos a la ruta la subcarpeta
    xMkDir Ruta 'Creamos la carpeta si no existía (Requiere el módulo mdlProcedimientos)
    Doc.SaveAs2 Ruta & "Remisión de Muestras.docx" 'Guardamos el documento
    MsgBox "La exportación se ha llevado a cabo correctamente"
 
    Exit Sub
 
cmdExportar_Click_Err:
    MsgBox "Se ha producido un error " & Err & " '" & Err.Description & "' en el proceso de exportación."
 
    Set Doc = Nothing
    Set Wrd = Nothing
    Set Fld = Nothing
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 29/04/2021 15:09:42
Perdón por el post anterior, me lie.

Pues nada, hice lo que me dices, cambié

1
2
3
4
5
6
7
8
9
10
11
12
13
For Each Fld In Doc.Fields
        'Obtememos el nombre del campo
        x = Fld.Result.Bookmarks(1).Name
        'para referirnos al campo equievalente de la BdD
        If Left(x, 1) = "_" Then    'Si comienza por "_" está en el subformulario
            x = Mid(x, 2)           'Quitamos el primer carácter
            Fld.Result.Text = "HOLA" 'Me.SubforDocSalida.Form.Controls(x)   'Y ponemos su valor que
                             'está en el subformulario
        Else
            'Ponermos el valor que está en el formulario principal
            Fld.Result.Text = Me.Controls(x)
        End If
    Next

pero sigue saliendo el error, no sale el mensaje de HOLA

Captura5
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 30/04/2021 10:00:08
Hola:

Lo que me imaginaba: el nombre del campo en Word comenzando por "_" no tiene nada que ver. El problema está en el nombre del subformulario. Mándame un pantallazo con el formulario principal en vista diseño, con el subformulario seleccionado y las propiedades visibles (sobre todo la propiedad Nombre). Puede que el control del formulario principal que alberga el subformulario tenga un nombre distinto. Es raro pero puede ocurrir.

Te adjunto una imagen de lo que necesito.

Captura

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 30/04/2021 10:22:39
Te mando la que me pides, con el campo DESTINATARIO seleccionado, y te mando después dos mas con el subformulario seleccionado, para que veas como está distribuido en la pestaña DOCUMENTOS DE SALIDA ( SubforDocSalida )

En la última te envío seleccionado el control de pestañas


Captura6
Captura7
Captura8
Captura9
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 30/04/2021 12:47:50
Hola:

Con el formulario abierto en la vista de diseño (y todos los demás cerrados) vas a poner las siguientes líneas en la ventana de inmediato. Las pegas de una en una pulsando Intro cada vez. Si se ejecuta correctamente saldrá algo escrito debajo de ella y si no, dará un error (si una da error, no sigas con las demás):

? Forms(0).SubforDocSalida.Name

? Forms(0).SubforDocSalida.Form.Name

? Forms(0).SubforDocSalida.Form.Controls.Count

? Forms(0).SubforDocSalida.Form.Controls("DESTINATARIO").Name

? Forms(0).SubforDocSalida.Form.Controls("CIUDAD").Name

? Forms(0).SubforDocSalida.Form.Controls("DEPARTAMENTO").Name

? Forms(0).SubforDocSalida.Form.Controls("FIRMANTEOFICIO").Name

? Forms(0).SubforDocSalida.Form.Controls("TIPFIRMANTE").Name

Si todo va bien, debería de salir esto:

Captura

Si alguno te da error es porque en el documento de Word el campo no tiene el marcador bien definido (date por muerto) y si todo está bien, me pego un tiro y digo que ha sido un accidente.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 30/04/2021 12:56:57
Aquí dio un error al poner: ? Forms(0).SubforDocSalida.Form.Controls("FIRMANTEOFICIO").Name

Pero no entiendo lo que quiere decir

Captura10
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 30/04/2021 13:54:49
Hola:

Pues lo que quiere decir es que no hay ningún control en el subformulario que se llame FIRMANTEOFICIO. Prueba con TIPFIRMANTE a ver si también da error. Si es así es que, aunque el origen del control (los campos de la tabla correspondiente) sean FIRMANTEOFICIO y TIPFIRMANTE, respectivamente, los nombres serían otros. Compruébalo y cámbiaselos. En la pestaña "Todas" de la lista de propiedades aparecen uno debajo del otro. Haz que el nombre sea igual que el origen del control y que en Word se llamen así con el guión bajo por delante. ¡Y TENDRÍA QUE FUNCIONAR!

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 30/04/2021 19:57:27
La verdad es que no se donde estará el problema, pero después de todo lo que llevo trasteado y todas las cosas que mas indicado, te cuento lo que yo observo por si te sirve de indicación para detectar el problema.

Para crear el documento de Word, lo hago desde el subformulario documento de salida (SubforDocSalida), en este Subformulario es donde tengo el botón.
Si pongo el botón Imprimir Documento Salida dentro del Subformulario, no funciona la creación del Word, ya que los campos que voy a utilizar, están en su mayoría en el Formulario Principal y otros en el Subformulario.
Es importante donde está colocado el botón.

Sin hacer nada más y sólo cambiar el BOTON del Subformulario al Formulario Principal, ya funciona la generación del Word, pero da error en el primer campo que tiene que leer que está en el subformulario.

En resumen, que si el botón está en el Formulario Principal, genera el Word y da error cuando tiene que rellenar el campo del Subformulario con el guion bajo.

Si el botón lo pongo en el subformulario, pues da error al generar el word, porque nada más abrirse el word, el primer campo que tiene que poner está en el Formulario Principal, y como no está en el mismo formulario que el botón da error.

Hice la prueba en el subformulario de poner el botón, y colocar en el word primero los campos que tengo que leer del subformulario y entonces funciona y da error cuando va a leer los campos del Formulario Principal.

Conclusión: Que dependiendo donde pones el botón, lee bien los campos de ese formulario y el error lo da cuando tiene que leer los campos del otro formulario.
Como arreglar eso?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 04/05/2021 00:51:14
Hola Norberto, para este código que me pusiste, para cargar mediante un botón un archivo PDF dentro del campo HIPERVÍNCULO al que llamo DOCRECIBIDO, como hay que hacer para que el documento me lo hipervincule pero que lo guarde dentro de la carpeta del caso 001, 002, 003 que está en ese momento y que lo renombre y le llame DOCUMENTACION_ENTRADA.PDF

O sea que yo selecciono el documento escaneado de la carpeta "H:\SCANNER\LAB\" o de la que sea, y que se llame como se llame, el documento, lo renombre a DOCUMENTACION_ENTRADA.PDF y lo guarde en la carpeta del caso IDLAB en el que estoy en ese momento 001, 002, 003 etc... y que quede hipervinculado en el campo DOCRECIBIDO

Un saludo
Francisco

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub cmdAbrirPDF_Click()
    Dim myDlgBox As FileDialog, N As Integer, Doc As String
 
    Set myDlgBox = FileDialog(msoFileDialogFilePicker)  'Creamos un objeto FileDialog
    With myDlgBox
        .InitialFileName = "H:\SCANNER\LAB\" 'Definimos la ruta inicial
        .AllowMultiSelect = False           'Indicamos que solo se puede elegir una archivo
        For N = 1 To .Filters.Count         'Eliminamos los filtros de archivo
            .Filters.Delete 1
        Next
        .Filters.Add "Documentos de Adobe Acrobat", "*.pdf" 'Añadimos el filtro de archivo para los PDF
        .Filters.Add "Todos los archivos", "*.*"             'Añadimos el filtro de archivo para todos los documentos
        If .Show Then   'Si seleccionamos algún archivo
            Doc = .SelectedItems(1)   'Guardamos su nombre en una variable
            'Construimos el vínculo y lo asignamos al campo correspondiente
            Me.DocumentoPDF = "..." & Mid(Doc, InStrRev(Doc, "\")) & "#" & Doc & "#"
        End If
    End With
 
    Set myDlgBox = Nothing
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 05/05/2021 12:42:27
Hola.

Ya no se me ocurre nada a no ser que subas la BdD y el documento y les eche un vistazo.

Otra opción sería poner el botón en el subformulario y modificar el código para que saque unos valores del propio subformulario (que son los que ahora están dando problemas) y los otros, del formulario "padre" de este.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 05/05/2021 14:38:29
Hola:

Cambia el código por este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Sub cmdAbrirPDF_Click()
    Dim myDlgBox As FileDialog, N As Integer, Doc As String
    Dim NuevaCarpeta As String
    Dim NuevoNombre  As String
    Dim i As Integer
 
    i = InStrRev(CurrentDb.Name, "\")
    NuevaCarpeta = Left(CurrentDb.Name, i) & "Documentación\" & Format(Me.IdReg, "000") & "\"
    NuevoNombre = NuevaCarpeta & "DOCUMENTACION_ENTRADA.pdf"
 
    Set myDlgBox = FileDialog(msoFileDialogFilePicker)  'Creamos un objeto FileDialog
    With myDlgBox
        .InitialFileName = "H:\SCANNER\LAB\" 'Definimos la ruta inicial
        .AllowMultiSelect = False           'Indicamos que solo se puede elegir una archivo
        For N = 1 To .Filters.Count         'Eliminamos los filtros de archivo
            .Filters.Delete 1
        Next
        .Filters.Add "Documentos de Adobe Acrobat", "*.pdf" 'Añadimos el filtro de archivo para los PDF
        .Filters.Add "Todos los archivos", "*.*"             'Añadimos el filtro de archivo para todos los documentos
        If .Show Then   'Si seleccionamos algún archivo
            Doc = .SelectedItems(1)
            'Movemos y renombramos el archivo
            If Dir(NuevoNombre) <> "" Then 'Si ya existe el archivo
                Kill NuevoNombre    'Lo elimina
            End If
            Name Doc As NuevoNombre 'Lo movemos y renombramos
            Doc = NuevoNombre
            Me.DOCRECIBIDO = "..." & Mid(Doc, InStrRev(Doc, "\")) & "#" & Doc & "#"
        End If
    End With
 
    Set myDlgBox = Nothing
End Sub

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 06/05/2021 02:13:43
Funciona perfectamente, y este código para el botón lo voy a utilizar para guardar otros documentos, lo que me lleva a preguntar, como habría que hacer para en vez de poner el nombre fijo de DOCUMENTACIÓN_ENTRADA.PDF, me preguntará como quiero llamar al documento. Así sería mucho más versátil, al, poder cargar otros documentos y escribir en un InputBox con que nombre quiero guardarlo en PDF. No lo tengo muy claro pero supongo que sería creando una variable y que un InputBox me pregunta como quiero llamar al documento y así lo guarda con el nombre que le ponga en PDF. No se como añadir lo delmPDF al nombre. Y supongo que la variable seria igual al contenido del InputBox. Me sé más o menos la teoría pero ponerlo en práctica ya es otra cosa.

En cuanto a lo del documento de Word, se me ocurrió una cosa que voy a probar, a ver que te parece la idea, si crees que puede ser factible hacerlo, lo voy a intentar y sino puedo te subo una copia de la base.
La idea es la siguiente: Como el Word que quiero crear necesita campos de dos formularios y ya hemos visto cual es el problema que hay problemas, se me ocurrió, crear una Consulta con los campos de ambos formularios, que se filtra por el campo IDLAB.
Después creo un Formulario a partir de esa consulta, que al abrise ya aparece filtrado por el campo IDLAB, y entonces en este formulario como tiene todos los campos que necesito para crear el Word, es donde pongo el botón, con el código que pusiste para generar el word, así no tengo que usar el guión bajo, que vimos que no me iba bien, y todos los campos del Word se crean normalmente. A ver si sale bien.

Si esto sale bien y lo del botón de arriba también, creo que puedo ponerme a tope con la base porque son las dos cosas que me están rompiendo la cabeza. Si puedo grabar todos los documentos con el nombre que yo quiero porque me lo pregunta, me da mucho juego ya que tengo varios documentos distintos para grabar. La otra opción sino sale bien lo de que me pregunte con qué nombre quiero guardarlo, sería utilizar éste último código que pusiste y crear un botón para cada nombre de documento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 06/05/2021 13:42:58
Hola:

Básicamente debes de usar el operador & para concatenar las distintas partes que se refieren al documento y que podrían estar en variables o constantes (textos literales entre comillas).

Si tienes la ruta de acceso en la misma carpeta que la base de datos, deberás extraer aquella de la propiedad Nombre de ésta, de esta manera:

1
2
3
4
5
Dim i As Integer, Ruta As String
...
    i = InStrRev(CurrentDb.Name, "\")
    Ruta = Left(CurrentDb.Name, i)
...

En la parte superior definimos las variables junto con otras que necesitemos. La primera línea del código busca la posición de última barra en el nombre completo de la BdD. La segunda línea extrae los i caracteres de la izquierda con lo que lla tendríamos la ruta de la BdD incluyendo el separador "\".

Si dentro de esta carpeta existe una llamada "DOCUMENTACIÓN", y dentro de esta otra según el número de registro y ya, en esta, el documento, construiremos el nombre completo del mismo concatenando todas las partes.

Como bien dices, el nombre lo puedes solicitar por medio de un InputBox y guardarlo en una variable que habrías definido anteriormente (NombreDoc = InputBox("Introducir el nombre del archivo:")).

Para hacer referencia al todo usaríamos Ruta & "DOCUMENTACIÓN\" & Format(Me.IdReg, "000") & "\" & NombreDoc & ".pdf".

Es muy importante controlar las contrabarras para evitar errores, que no se junten dos nombres sin ella o que queden dos seguidas.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 06/05/2021 13:55:04
Ahora ya me lie más, pensé que sería meter un Inputbox donde antes tenía el nombre del documento. Si, todas las carpetas 001,002,003, están dentro de la carpeta Documentación que está en la misma carpeta que la base de datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 07/05/2021 09:30:48
Hola:

No entiendo el lío. Para hacer referencia a un archivo hay que especificar la ruta, el nombre y la extensión. Parte de la ruta es fija C:\.......\Documentación\" y otra cambia para cada registro (001\, 002\, 003\...). Esa parte fija la puedes poner como una constante (Const Ruta = "C:\.......\Documentación\"). Es una opción válida siempre que no cambies la BdD ni la documentación de sitio. Si lo haces tendrías que modificar el código para indicar la nueva ruta. Otra opción, que es la que te sugiero, es usar una variable y sacarla del nombre de la BdD.

Imaginémonos que la base de datos está en C:\GestiónDocumentos y se llama Gestión.accdb y los documentos están en C:\GestiónDocumentos\Documentación, en sus correspondientes subcarpetas. Por otro lado queremos que el usuario introduzca el nombre del archivo a través de InputBox y la extensión es fija (.docx no .pdf como te puse por error). Vamos a cosntruir la referencia al archivo de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
...
    Dim Ruta As String, NomArchivo As String, i as integer
    ...
    'Averiguamos dónde está la BdD
    i = InstrRev(CurrentDb.Name, "\")
    Ruta = Left(CurrentDb.Name, i)
    ...
    NomArchivo = InputBox("Introduce el nombre del archivo")
    'Ahora vamos a guardar el documento donde corresponde y con el nombre indicaro
    'El objeto documento está en la variable Doc tal y como hemos venido haciendo desde el principio
    Doc.SaveAs2 Ruta & "Documentación\" & Format(Me.IdReg, "000") & "\" & NomArchivo & ".docx"

Lo que hace la línea 11 es guardar el archivo en una carpeta que se llamará como el IdReg (completando con ceros por la izquierda) que está dentro de otra llamada "Documentación" que, a su vez, está en la misma carpeta de la BdD, con el nombre que ha introducido el usuario y con la extensión ".docx".

¿Alguna duda? Si es así, ¿Qué líneas no entiendes?

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 07/05/2021 10:26:56
Ahora lo entiendo perfectamente. Muchas Gracias. Te explicas genial. Ya te contaré.
Gracias.
Lo otro del Word, lo probé y va bien. Cree una consulta de las dos tablas que contienen los campos para el Word, despues cree un formulario filtrado de esa Consulta y en ese formulario pongo el botón con el código que abre el Word.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 08/05/2021 23:20:02
Tengo un problemilla al generar el Word. Cree una Consulta con los campos de dos tablas, después cree el formulario de la Consulta y es en ese formulario donde tengo el botón que crea el Word con los campos de este formulario.
El problema viene dado, porque a veces alguno de los campos no tiene datos y al generarse el Word, se para ahí en ese campo porque parece ser que no puede contener un valor NULO.
No hay forma de que eso no suceda? que si un campo está vacío, siga adelante y finalice la creación del Word?

También hay otro problema. tengo un campo llamado CASOLM, que sale al principio del documento del Word y también sale el mismo campo al final.
Resulta que si lo pongo al principio, cuando lo vuelvo a poner al final se vacía la propiedad "Marcador" que es donde va el nombre del campo, en la parte de arriba del word, donde lo puse la primera vez, y si lo pongo arriba, se vacía el de abajo.
No se si esto se puede solucionar también.
No quiero romperte la cabeza pero si se te ocurre algo, pues me comentas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 08/05/2021 23:49:01
Bueno el problema del error si el campo se queda vacío no lo se solucionar.

El otro error el de repetir el campo en el Word y que no de fallo, lo solucioné creando dos veces el mismo campo en el formulario,les llamo de distinta manera y oculto uno de ellos poniendo la propiedad visible del campo en NO.
Creo los campos:
CASOLS
CASOLS2, a este le pongo la propiedad visible en NO, y en el Word llamo a los dos campos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 09/05/2021 13:43:11
Bueno el error del campo vacío lo solucioné también, poniendo en el “Valor Predeterminado” de ese campo “:” dos puntos, así no da error y tampoco me queda mal, quedaría así Caso LS:
Pero ahora tengo otro en el que estoy atascado
Cuando estoy en el control de pestañas, en la pestaña “Documentación Salida” creo el documento de Word, y éste se guarda de forma automática en la carpeta correspondiente del caso IDLAB en el que estoy en ese momento, por ejemplo DOCUMENTACIÓN/003/Remisión_Indicios.docx
Lo que pasa que debería guardarse también en el campo hipervínculo que hay en ese formulario que se llama DOCUMENTO ENVIADO.
Digamos que tengo dos botones relacionados con ese campo hipervínculo.
1.- Uno llamado “Oficio de remisión” que debe generar el Word, y guardar una copia dentro de la carpeta DOCUMENTACIÓN/003/Remisión_Indicios.docx por ejemplo y a mayores guardar el enlace de la ruta dentro del campo “DOCUMENTO ENVIADO” para que ese campo no quede vacío, y después,
2.- Otro botón que se llama “Cargar Documento” para las veces que no genero el “Oficio de Remisión” y quiero subir otro tipo de documento, por ejemplo algo escaneado en PDF al campo “DOCUMENTO ENVIADO”
El problema lo tengo con la opción 1, que sólo se me guarda el Word en la carpeta pero no el enlace en el campo hipervínculo DOCUMENTO ENVIADO,
Me puedes echar un cable?

Necesito añadir a mayores que se guarde en el campo hipervículo "DOCUMENTOENVIADO"

El código que tengo para generar el Word es este:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Private Sub Comando40_Click()
On Error GoTo cmdExportar_Click_Err
 
    'Definimos la variables. La referencia a Microsoft Word xx.xx Object Library debe de estar activada
    '(Herramientas->Referencias...)
    Dim Wrd As Word.Application, Doc As Word.Document, Fld As Word.Field
    Dim i As Integer, x As String, Ruta As String
 
    i = InStrRev(CurrentDb.Name, "\") 'Buscamos el último separador (\) del nombre completo de la BdD.
    'Obtenemos la ruta de la carpeta en la que se va a guardar el documento
    Ruta = Left(CurrentDb.Name, i) & "Documentación\"
 
 
    'Creamos el objeto Word
    Set Wrd = CreateObject("Word.Application")
    Wrd.Visible = True
 
    'Abrimos el documento
    Set Doc = Wrd.Documents.Open(Ruta & "Remisión_Indicios.docx")
 
    If Doc.ProtectionType <> wdAllowOnlyFormFields Then
        'Protegemos el documento para poder rellenarlo
        If Doc.ProtectionType <> wdNoProtection Then
            Doc.Unprotect
        End If
        Doc.Protect wdAllowOnlyFormFields
    End If
 
     'Para cada campo
    For Each Fld In Doc.Fields
        'Obtememos el nombre del campo
        x = Fld.Result.Bookmarks(1).Name
        'para referirnos al campo equievalente de la BdD
        If Left(x, 1) = "_" Then    'Si comienza por "_" está en el subformulario
            x = Mid(x, 2)           'Quitamos el primer carácter
            Fld.Result.Text = "HOLA" 'Me.SubforDocSalida.Form.Controls(x)   'Y ponemos su valor que
                             'está en el subformulario
        Else
            'Ponermos el valor que está en el formulario principal
            Fld.Result.Text = Me.Controls(x)
        End If
    Next
 
'    Para cada campo
'    For Each Fld In Doc.Fields 'Word no permite referirse a un campo por el nombre
'        Obtememos el nombre del campo
'        x = Replace(Fld.Result.Bookmarks(1).Name, "_", " ")
'        para referirnos al campo equievalente de la BdD
'        Fld.Result.Text = Me.Controls(x)
'    Next
 
    Ruta = Ruta & Format(Me.IDLAB, "000") & "\" 'Añadimos a la ruta la subcarpeta
    xMkDir Ruta 'Creamos la carpeta si no existía (Requiere el módulo mdlProcedimientos)
    Doc.SaveAs2 Ruta & "Remisión_Indicios.docx" 'Guardamos el documento
    MsgBox "La exportación se ha llevado a cabo correctamente"
 
    Exit Sub
 
cmdExportar_Click_Err:
    MsgBox "Se ha producido un error " & Err & " '" & Err.Description & "' en el proceso de exportación."
 
    Set Doc = Nothing
    Set Wrd = Nothing
    Set Fld = Nothing
End Sub

Necesito añadir a mayores que se guarde en el campo hipervículo "DOCUMENTOENVIADO"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 10/05/2021 09:44:00
Hola:

Para el primer problema, el valor nulo, usamos la función Nz(...). La línea donde pones Fld.Result.Text = Me.Controls(x), cámbiala por Fld.Result.Text = Nz(Me.Controls(x)). De esta manera los nulos se cambian a cadenas vacías. Si prefieres que es estos casos ponga un literal dado, como por ejemplo, varios guiones, pon Fld.Result.Text = Nz(Me.Controls(x), "----").

En el segundo caso, el campo repetido, tienes que eliminar el último de ellos y en su lugar poner una referencia cruzada al marcador correspondiente al campo.

Captura

La solución que has encontrado y que mencionas en el otro post, es perfectamente válida.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 10/05/2021 13:48:06
Puse esto:
1
Me.DOCUMENTOENVIADO = "..." & Ruta & "Remisión_Indicios.docx"

debajo de donde se guarda el documento de word en la carpeta, para que a mayores se guarde el enlace hipervículo en el campo "DOCUMENTOENVIADO", pero me da error, y no funciona, no graba nada en el campo y me da error tras generarse el word, por culpa de esa instrucción.
A ver si puedes echarle un ojo, Gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Private Sub Comando40_Click()
On Error GoTo cmdExportar_Click_Err
 
    'Definimos la variables. La referencia a Microsoft Word xx.xx Object Library debe de estar activada
    '(Herramientas->Referencias...)
    Dim Wrd As Word.Application, Doc As Word.Document, Fld As Word.Field
    Dim i As Integer, x As String, Ruta As String
 
    i = InStrRev(CurrentDb.Name, "\") 'Buscamos el último separador (\) del nombre completo de la BdD.
    'Obtenemos la ruta de la carpeta en la que se va a guardar el documento
    Ruta = Left(CurrentDb.Name, i) & "Documentación\"
 
 
    'Creamos el objeto Word
    Set Wrd = CreateObject("Word.Application")
    Wrd.Visible = True
 
    'Abrimos el documento
    Set Doc = Wrd.Documents.Open(Ruta & "Remisión_Indicios.docx")
 
    If Doc.ProtectionType <> wdAllowOnlyFormFields Then
        'Protegemos el documento para poder rellenarlo
        If Doc.ProtectionType <> wdNoProtection Then
            Doc.Unprotect
        End If
        Doc.Protect wdAllowOnlyFormFields
    End If
 
     'Para cada campo
    For Each Fld In Doc.Fields
        'Obtememos el nombre del campo
        x = Fld.Result.Bookmarks(1).Name
        'para referirnos al campo equievalente de la BdD
        If Left(x, 1) = "_" Then    'Si comienza por "_" está en el subformulario
            x = Mid(x, 2)           'Quitamos el primer carácter
            Fld.Result.Text = "HOLA" 'Me.SubforDocSalida.Form.Controls(x)   'Y ponemos su valor que
                             'está en el subformulario
        Else
            'Ponermos el valor que está en el formulario principal
            Fld.Result.Text = Me.Controls(x)
        End If
    Next
 
'    Para cada campo
'    For Each Fld In Doc.Fields 'Word no permite referirse a un campo por el nombre
'        Obtememos el nombre del campo
'        x = Replace(Fld.Result.Bookmarks(1).Name, "_", " ")
'        para referirnos al campo equievalente de la BdD
'        Fld.Result.Text = Me.Controls(x)
'    Next
 
    Ruta = Ruta & Format(Me.IDLAB, "000") & "\" 'Añadimos a la ruta la subcarpeta
    xMkDir Ruta 'Creamos la carpeta si no existía (Requiere el módulo mdlProcedimientos)
    Doc.SaveAs2 Ruta & "Remisión_Indicios.docx" 'Guardamos el documento
 
 
    Me.DOCUMENTOENVIADO = "..." & Ruta & "Remisión_Indicios.docx"
 
 
 
    MsgBox "La exportación se ha llevado a cabo correctamente"
 
    Exit Sub
 
cmdExportar_Click_Err:
    MsgBox "Se ha producido un error " & Err & " '" & Err.Description & "' en el proceso de exportación."
 
    Set Doc = Nothing
    Set Wrd = Nothing
    Set Fld = Nothing
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 10/05/2021 14:17:21
Bueno, la realidad no es que no funcione, si que funciona, porque me rellena la ruta del documento dentro del campo DOCUMENTOENVIADO, el problema es que pulso encima del texto del campo y debería de abrir el documento, pero no ocurre nada. No se abre el Word y muestra el documento

ERROR3
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 10/05/2021 15:06:39
Hola:

Los campos hipervínculo tienen dos partes. Por un lado está el texto que queremos que aparezca y por otro el enlace. Este último va entre signos de almohadilla y el primero es opcional. La sintaxis que hay que construir es la siguiente:

Campo = "texto a mostrar#enlace al documento o a la URL#". Para que no salga la ruta completa (que es muy larga) y luelo mostrar puntos suspensivos seguido del nombre del documento. Para que no te líes pon

1
Me.DOCUMENTOENVIADO = "#" & Ruta & "Remisión_Indicios.docx#"

Si quieres usar mi método de visualización pones:

1
Me.DOCUMENTOENVIADO = "...\Remisión_indicios.docx#" & Ruta & "Remisión_Indicios.docx#"

Lo importante es que la ruta completa al archivo esté entre almohadillas.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 10/05/2021 18:37:16
En relación a esto que me pusiste,
No me funciona, me explico.
Tengo puesto dos campos iguales CASOLS y CASOLS2
Borro el campo CASOLS2 que está abajo del todo del documento WORD, y en el epacio en blanco que queda, hago lo que me dices, voy al menú Referencias y selecciono Referencia Cruzada, seleccionado tipo MArcador y selecciono el campo CASOLS, pulso el botón Insertar pero en el Word no ocurre nada.
Veo como en el lugar donde tengo puesto el cursor, se desplaza el cursor, como si se hubiese insertado un tabulado, pero realmente no ocurre nada más.
Guardo los cambios, genero el Word y en el lugar donde debería repetirse el valor del campo no sale nada

----------------------------------------------------------------------

Hola:

Para el primer problema, el valor nulo, usamos la función Nz(...). La línea donde pones Fld.Result.Text = Me.Controls(x), cámbiala por Fld.Result.Text = Nz(Me.Controls(x)). De esta manera los nulos se cambian a cadenas vacías. Si prefieres que es estos casos ponga un literal dado, como por ejemplo, varios guiones, pon Fld.Result.Text = Nz(Me.Controls(x), "----").

En el segundo caso, el campo repetido, tienes que eliminar el último de ellos y en su lugar poner una referencia cruzada al marcador correspondiente al campo.
6098e3cbf2bde-Captura
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 11/05/2021 09:58:40
Hola:

Es un problema de actualización. En el momento en el que se fyuese a imprimir o al guardarlo y volverlo a abrir, ya aparecería actualizado pero se puede forzar la actualización para no tener que hacer ninugna de las dos cosas.

También te debería de haber dado un error ya que al añadir una referencia cruzada (que es también un objeto Field) esta ni tiene marcador ni hay que tratarla como a los otros campos. Para que todo vaya bien, reemplaza el bucle For Each Fld...Next por este otro:

1
2
3
4
5
6
7
8
9
10
11
12
13
...
    For Each Fld In Doc.Fields 'Word no permite referirse a un campo por el nombre
        'Obtememos el nombre del campo
        If Fld.Type = wdFieldRef Then   'Si el campo es una referencia cruzada
            Fld.Update                  'lo actualizamos
        ElseIf Fld.Type = wdFieldFormTextInput Then
            'Si no, si es un campo de texto de formulario
            x = Fld.Result.Bookmarks(1).Name
            If x <> "" Then 'Si el campo tiene marcador
                Fld.Result.Text = Me.Controls(x)
            End If
        End If
    Next

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 21/06/2021 19:27:31
Hola Norberto, lo primero agradecer lo mucho que me has ayudado, está claro que sin tu ayuda no lo hubiera conseguido.
Lo tengo ya prácticamente funcionando, me van quedando algunos flecos.
Abusando de tu sabiduría quería preguntarte como hacer una cosa.
Las pestaña Documentación de Entrada y de Salida, están cada uno en un control de pestañas como ya te comenté, son unos formularios llamados SubForDocEntrada y SubForforDocSalida (No se por que le puse lo de Sub, porque en realidad no son subformularios, pero ahora ya está, lo vengo arrastrando desde el principio), pero para que nos entendamos se llaman así)
, que son como fichas en las que voy dando de alta la documentación que me entra y los que salen. Son formularios en los que que voy dando de alta Documentos que voy a almacenar y a enviar.
Dentro de cada uno de estos formularios, tengo un Subformulario en modo Hoja de Datos llamado ResumenDocEntrada y ResumenDocSalida

Estos subformularios en modo Hoja de datos son para ver en una tabla todos los documentos que tengo subidos en la ficha en la que estoy actualmente.
O sea, si estoy en el CASO 005 y tengo añadidos 3 documentos de entrada (Ficha1, ficha 2 y ficha 3) y estoy en la ficha número 3 , pues en la tabla veo los tres documentos que tengo añadidos y pulsando en cualquiera de ellos en la tabla, pues puedo abrirlo.

AQUI ES DONDE AHORA PIDO AYUDA:
Quería que cuando seleccione una FILA de la Hoja de datos, por ejemplo la fila 1, la 2 o la 3, se me filtre el SubForDocEntrada y los campos se rellenen con los datos correspondientes a esa ficha, porque me interesa ver los campos de esa ficha.
Tengo unos botones (selectores de registro) para desplazarme para delante y para atras, que también puedo hacer eso, pero pulsando en un momento dado en la tabla Hoja de datos, es más rápido. Si tengo 10 o 15 registro cargados en ese caso es más ràpido pulsar encima de la fila y que se refresque el formulario que estar pulsando el selector de registro para adelante y para atras.
Mas o menos es un refresco del formulario.
El campo principal de SubForDocEntrada y SubForforDocSalida se llama IDLAB y el del subformulario que carga en modo Hoja de datos también se llama IDLAB.
Vamos que es el campo que se relaciona con el subformulario pricipal.

Bueno espero no haberme enrollado de más y que entiendas lo que quiero contar.
Espero que puedas orientarme
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 14/07/2021 19:33:50
A ver si pueden echarme un cable, no se como funciona lo de concatenar al nombre del documento, que me lo incremente si ya existe el nombre o que le concatene el valor de otro campo al nombre.

Resulta que a veces tengo que generar dos documentos de Remisión de Indicios el mismo día, con el mismo destino pero a laboratorios distintos, entonces genero dos fichas de Salida, pero claro al generar el primero el documento en la primera ficha de salida, se crea el documento Remisión_Indicios.docx, pero cuando creo el segundo documento en la ficha dos, el documento se llama igual, y entonces me pisa el anterior.
Hay alguna forma que me los vaya numerando, si ya existe uno?
Remisión_Indicios.doc
Remisión_Indicios01.doc
Remisión_Indicios02.doc

o que le añada el nombre del laboratorio al que va dirigido, que coja el valor del campo UNIDADDESTINO y se lo añada al nombre del documento.
Remisión_Indicios_BI.doc
Remisión_Indicios_ID.doc
Remisión_Indicios_Q.doc
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Norberto (80 intervenciones) el 19/07/2021 13:46:58
Hola:

No se puede detectar si se ha seleccionado un registro de un formulario, tanto en la vista Formulario como en la vista Hoja de datos. El único evento que se puede capturar sería "Al cambiar de registro" o "Current" que es el mismo que ocurre cuando usas los botones de navegación. No sé si podrías sustituir estos formularios que tienes en la vista "Hoja de datos" por cuadros de lista; si solo es para hacer una selección...

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 120
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar un Word o PDF con campos de un Formulario

Publicado por Francisco (54 intervenciones) el 22/07/2021 17:35:17
Y la opción de ir renombrandolos
Remisión_Indicios.doc
Remisión_Indicios01.doc
Remisión_Indicios02.doc
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Rellenar un Word o PDF con campos de un Formulario

Publicado por Armando (3 intervenciones) el 17/09/2022 10:43:30
Buenos días.

He llegado aquí buscando información para rellenar documentos word desde datos existentes en access.

He seguido con atención el hilo, y efectivamente funciona.

Tan solo me surge un problema, si en el documento word solo hay campos de formulario con su correspondiente nombre de marcador, el código funciona perfectamente, pero si hay algún otro campo, por ejemplo un campo fecha, o una referencia cruzada, o cualquier otro que la base de datos no pueda "leerlo" para compararlo con los campos del formulario access, entonces se para en ese punto y solo rellena hasta el primer campo "distinto" (por decirlo de alguna forma) que se encuentra.

¿Tendría esto solución?

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Rellenar un Word o PDF con campos de un Formulario

Publicado por Armando (3 intervenciones) el 17/09/2022 10:51:08
Hola.

Eso yo lo hago con la opción formularios divididos.

Te permite dividir en dos el formulario, en una parte ves un solo registro y en la otra ves una tabla con todos los registros. Cuando clickas en la tabla en la línea de un registro en la otra parte del formulario ves ese registro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Rellenar un Word o PDF con campos de un Formulario

Publicado por Armando (3 intervenciones) el 17/09/2022 10:58:55
En mi opinión es mejor la segunda opción, porque así sin abrir el archivo ya sabes cual es.

Para concatenar, puedes hacerlo con lo que te puso Norberto en el post del 15/04/2021:

Hola:

Elimina las líneas Doc.Close y Wrd.Quit para que no se cierren ni Word ni el documento.

En cuanto a dónde se va a guardar, puedes usar Doc.SaveAs2 ruta_de_acceso. La ruta la puedes componer concatenando valores. P.E.: Doc.SaveAs2 "D:\Documentación\" & Me.Registro_de_entrada & "\nombre del documento.dotx".

Un saludo,

Norberto.


Si prefieres hacerlo por números consecutivos, yo lo haría con un bloque if, que busque si existe el archivo Remisión_Indicios.doc, si existe pues que el nombre sea Remisión_Indicios01.doc y así sucesivamente. Si nunca has enviado mas de 5, por ejemplo, pues pon dos o tres mas else, para que no te pise ninguno.
.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar