viernes, 7 de noviembre de 2008

Ejemplo macro con un formulario en Word

En este ejemplo voy a mostrar cómo hacer un formulario que carga datos en un plantilla de Word de una forma muy simple.

Voy a empezar mostrando el resultado para que sea más simple entender el código. Tenemos una plantilla de Word muy sencilla (se puede complicar todo lo que queramos) y queremos que aparezca un formulario para introducir los datos en él y que se carguen a su vez en el lugar correspondiente en la plantilla. Como el usuario final puede no tener mucha idea de informática, hemos creado un nuevo botón en la pestaña "Ver".


Cuando hagamos click en "Formulario Carga Datos" aparecer´el siguiente formulario.


Cuando hagamos click en el botón "OK" los datos se cargarán automáticamente en el documento.


Hasta aquí he mostrado el resultado, ahora voy a contar cómo se hace.

Por un lado tenemos el formulario (sólo hay que dibujarlo):


Por otro el código (basta con hacer doble click en el botón "OK" y luego pegar el siguiente código).

Private Sub OK_Click() 
Selection.GoToWhat:=wdGoToBookmark, Name:="NombreC"
Selection.TypeText Text:=Nombre.Text

Selection.GoToWhat:=wdGoToBookmark, Name:="Codigo"
Selection.TypeText Text:=Codigo.Text

Selection.GoToWhat:=wdGoToBookmark, Name:="Contrato"
Selection.TypeText Text:=Contrato.Text

Selection.GoToWhat:=wdGoToBookmark, Name:="ERP"
Selection.TypeText Text:=ERP.Text

Unload UserForm1

End Sub

Private Sub UserForm_Initialize()
'Con esto cargamos la fecha en el label 6
Label6.Caption = Date
End Sub


Finalmente, sólo me falta contar cómo agregar un botón en una pestaña. Para ello hay varias opciones pero quizá la más sencilla sea pinchar en Herramientas->Personalizar.



En la ventana que aparece buscamos en la parte izquierda "Macros", posteriormente pinchamos en la macro que queramos agregar y la arrastramos a la pestaña en la que deseemos colocarla.

4 comentarios:

Ramón Arista Reyes dijo...

Hola Jose Antonio!!!
Desde hace algun tiempo he tenido una inquietud respecto a un eje tematico, curiosamente nunca habia buscado nada al respecto en la web (es decir, solo habia hecho algunos vanos y breves intentos a nivel de ensayo y error) el eje tematico es: formularios-macro-tabla...
Lo que me parece realemente curioso es que este eje la has posteado desde el año pasado.. solo que en el sentido inverso (je, je), y mi pregunta es: Es posible desarrollar una macro que tome diversos archivos generados por el mismo formulario y apartir de cada uno de estos convertirse en los registros de la tabla?, es decir, concentrar los datos de varios formularios (archivo) en una sola tabla?

Esteban dijo...

Hola José,

¿Podrías poner un enlace al código? Sigo los pasos pero falta algo ya que no funciona.

Saludos

Anónimo dijo...

Hola ccoosbd, jose se equivoco en el codigo, debe ser:
Selection.GoTo What:=wdGoToBookmark, Name:="Nombre"
Selection.TypeText Text:=txtnombre.Text
y para que esos datos vayan a la hoja, debes de insertar un marcador: pestaña insertar, grupo vinculos, marcador. con eso sale.(office 2010), espero que te funciones saludos.
Peter Chirinos

Antony dijo...

Amigos debemos de establecer primeros los marcadores en la hoja de word, esto en word 2013 es en INSERTAR y buscar marcadores o bookmark en ingles, al nombrar estos marcadores donde queremos q se viertan los datos asi hacemos referencia a ellos en los códigos de él formulario, cabe señalar que se pueden tambien programar asi: en él comandbutton; activedocument.bookmark("nombre de él marcador").range=me.textbox1.value y asi sucesivamente cada textbox se va programando.