logo LWP Comunidad de Programadores Suscribete en LWP
LWP >> Cursos >> Curso Rápido de Visual Basic para Aplicaciones
Cursos Biblioteca de Temas Preguntas y Respuestas Buscador para Programadores Drivers Solicitudes para Programadores Programas y Utilidades Ofertas de Trabajo

COMBINAR MACROS CON CAMPOS DE FORMULARIO EN WORD

Hace poco tuve un problema práctico, necesitaba crear alrededor de 50 plantillas de Word y la sola idea de programar línea a línea usando Select.Typetext Text:= me daba dolor de estómago. ¿No sería mejor escribir las plantillas en Word e insertar los campos de formulario, que luego se conectaran con la una macro de entrada de datos?. Eso me ahorraría mucho trabajo y permitiría hacer una macro estándar que sirviese para varias plantillas con solo modificaciones menores.

Pero no encontraba la forma de hacerlo, finalmente se me ocurrió repasar el curso de un tal Tomás Bradanovic y ahi encontre la solución, ¿como lo hice? siguiendo mis propios consejos grabé un macro y luego estudié el código generado. Le saqué las líneas superfluas y listo.

Entrando en materia el procedimiento es el siguiente:

  • Abrir una plantilla con el documento que queremos crear, usando Ver, Barras de Herramientas, colocamos las barras Visual Basic y Formularios, luego escribí normalmente el documento y usando el botón para insertar campo de formulario, fui colocando los campos variables, aquí está el ejemplo. Noten las barras de Visual Basic y de formularios en la última fila, con el primer botón (ab) de la barra de formularios se insertan los campos:

  • Una vez escrito e insertados los campos le ponemos nombres, seleccionando cada campo, click con botón derecho, Propiedades, Nombre. Así los campos quedan con nombres descriptivos como: tribunal, ciudad, fecha, medico, proceso, fallecido, etc.
  • Luego hacemos click sobre la barra de Visual Basic para entrar al editor, y creamos la ventana estándar de ingreso de datos así:

  • Luego programamos la form con el evento initialize con

Private Sub UserForm_Initialize()
UserForm1.Caption = "Autopsia"
Label1.Caption = "MEDICO" 'combo1
Label2.Caption = "JUEZ" 'combo2
Label3.Caption = "SECRETARIO" 'combo3
Label4.Caption = "MOVIMIENTO" 'combo4
Label5.Caption = "FECHA" 'textbox1
Label6.Caption = "FALLECIDO" 'textbox2
Label7.Caption = "ROL" 'textbox3
Label8.Caption = "" 'textbox4
Label9.Caption = "" 'textbox5
Label10.Caption = "" '´textbox6
TextBox4.Visible = False
TextBox5.Visible = False
TextBox6.Visible = False
TextBox1.Text = Date
ComboBox4.Text = "SUM SOLICITA INF AUTOPSIA"
ComboBox1.AddItem "CARLOS VILLAVICENCIO SILVA"
ComboBox1.AddItem "ADRIANA BARRIENTOS ESPINOZA"
ComboBox2.AddItem "JORGE QUIÑONES GARAT"
ComboBox2.AddItem "HECTOR GUTIERREZ MASSARDO"
ComboBox3.AddItem "HECTOR GUTIERREZ MASSARDO"
ComboBox3.AddItem "JULIO MAZUELOS RAMOS"
ComboBox1.Text = ComboBox1.List(0)
ComboBox2.Text = ComboBox2.List(0)
ComboBox3.Text = ComboBox3.List(0)
End Sub

  • Y lo importante, en el botón de comando escribimos:

Private Sub CommandButton1_Click()
Selection.GoTo What:=wdGoToBookmark, Name:="tribunal"
Selection.TypeText Text:="PRIMER"
Selection.GoTo What:=wdGoToBookmark, Name:="ciudad"
Selection.TypeText Text:="ARICA"
Selection.GoTo What:=wdGoToBookmark, Name:="fecha"
Selection.TypeText Text:=TextBox1.Text
Selection.GoTo What:=wdGoToBookmark, Name:="medico"
Selection.TypeText Text:=ComboBox1.Text
Selection.GoTo What:=wdGoToBookmark, Name:="rol"
Selection.TypeText Text:=TextBox3.Text
Selection.GoTo What:=wdGoToBookmark, Name:="fallecido"
Selection.TypeText Text:=TextBox2.Text
Selection.GoTo What:=wdGoToBookmark, Name:="juez"
Selection.TypeText Text:=ComboBox2.Text
Selection.GoTo What:=wdGoToBookmark, Name:="secretario"
Selection.TypeText Text:=ComboBox3.Text
Selection.GoTo What:=wdGoToBookmark, Name:="medico2"
Selection.TypeText Text:=ComboBox1.Text
Unload UserForm1
End Sub

Como pueden ver, todo se reduce a una instrucción
Selection.GoTo What:=wdGoToBookmark, Name:="nombre de variable" y luego escribimos en el campo con Selection.TypeText Text:=TextBox2.Text

Algunas precauciones al programar plantillas

Si están programando una plantilla (.dot) en lugar de un documento corriente hay que tener en cuenta que para modificarla debemos usar botón derecho y Abrir, si hacemos doble click no aparecerá la plantilla sino un Doc1.doc.

También hay que tener cuidado de no probar el programa cuando esté abierto como plantilla porque deesaparecerán los campos (serán reemplazados) y perderás el trabajo. Hay que cerrarla y luego abrirla con doble click para que aparezca como Doc1.doc.

Los detalles y adornos no los coloco para no enredarlos, solo les muestro a modo de idea, que se puede colocar alguna propaganda en el programa, en este caso al hacer click sobre "Tomás Bradanovic Computación" aparece la ventana de propaganda:

Un último dato, si abren la caja de herramientas y luego van a Herramientas, Controles Adicionales del menú, pueden agregar el control Microsoft MonthView 6.0 con lo que pueden dotar de un calendario a sus aplicaciones VBA para los programas que requieran cálculos con fecha, agendas, etc, miren que bonito es

Esto último lo descubrió Tomás Jr. (9 años) que está aprendiendo también a usar el VBA.

Ya lo ven, programar en VBA es más fácil que comer pan, espero que estos datos les hayan servido

tombrad@webhost.cl

http://fly.to/arica

 

Autor: Tomás Bradanovic
http://members.spree.com/sip/tombrad

Entrega 1 - Entrega 2 - Entrega 3 - Entrega 4 - Entrega 5 - Entrega 6 - Entrega 7 - Entrega 8 - Entrega 9
Descargar