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:
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
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
Autor: Tomás Bradanovic
|