Introducción
El siguiente paso es añadir el código VBA que se potencia la forma. Cinco procedimientos de código diferentes (a veces llamados macros) necesitan ser escritas.
En primer lugar, un procedimiento para "inicializar" la forma cuando se abre; un procedimiento para responder al clic de cada uno de los tres botones de comando; y un procedimiento para abrir el formulario automáticamente cuando se abre el documento.
La inicialización del formulario
En el Editor de Visual Basic abrir la ventana de código del formulario seleccionando la forma y presionando la tecla F7. Alternativamente haga clic derecho en el nombre del formulario en el panel Explorador de proyectos y seleccione Ver código en el menú contextual.
En la parte superior de la ventana de código hay dos listas desplegables, General y declaraciones. Abra la lista general, desplácese hacia abajo y seleccione formulario de usuario a continuación, abra la lista de declaraciones y seleccione Inicializar.
Usted puede notar que el Editor de Visual Basic intenta anticiparse a sus necesidades y también entra en el texto:
Private Sub UserForm_Click() End Sub
Por desgracia esto no es lo que necesita, pero puede ignorar o, si lo prefiere, puede eliminarlo (el Editor de Visual Basic, se eliminarán todos modos después, no se utilice, cuando se compila el código).
El Editor de Visual Basic ha escrito las primeras y últimas líneas del procedimiento de evento UserForm Initialize:
Private Sub UserForm_Initialize() End Sub
Cualquier código que escribe para este procedimiento debe introducirse entre estas dos líneas.
El evento Initialize se produce cuando se abre el formulario, para que pueda hacer uso de ella para establecer la forma lista para su uso, mediante el establecimiento de los valores predeterminados para los cuadros de texto o grupos de opciones, y llenando las listas de los cuadros combinados.
optGreeting1.Value = True
Por lo general, es una buena idea establecer un valor predeterminado para un grupo de opciones. Se recuerda al usuario que una elección tiene que ser hecho. Todo lo que tiene que hacer es fijar el valor de uno de los botones de opción a cierto con esta línea de código:
NOTA: Es una buena práctica de código escrito para presionar la tecla Tab antes de escribir una línea de código para aplicar sangría a la línea del margen (consulte el procedimiento de código completo más abajo). Esto hace mucho más fácil de bacalao para leer más tarde.
Al llenar la lista de un cuadro combinado, cada elemento debe añadirse en el orden en que desea que aparezca:
With cboInterviewLocation
.AddItem "London"
.AddItem "San Francisco"
.AddItem "Lunar Station"
.AddItem "Jupiter Station"
.AddItem "Deep Space 7"
.AddItem "Deep Space 9"
End With
NOTA: Esto se llama "Con la declaración". Se evita tener que escribir "CBO Entrevista ubicación" cada vez que añada un elemento. "Con las declaraciones" ahorrar tiempo en la escritura de código y ayudar a la ejecución de código con mayor rapidez.
Para establecer un valor inicial para un cuadro de texto introduce una línea similar a la siguiente:
txtInterviewTime.Value = "10.00 am"
Aquí está el procedimiento UserForm_Initialize acabada para el formulario de ejemplo.
Private Sub UserForm_Initialize()
optGreeting1.Value = True
With cboInterviewLocation
.AddItem "London"
.AddItem "San Francisco"
.AddItem "Lunar Station"
.AddItem "Jupiter Station"
.AddItem "Deep Space 7"
.AddItem "Deep Space 9"
End With
With cboInterviewDay
.AddItem "Monday"
.AddItem "Tuesday"
.AddItem "Wednesday"
.AddItem "Thursday"
.AddItem "Friday"
End With
With cboInterviewDuration
.AddItem "½ hour"
.AddItem "1 hour"
.AddItem "2 hours"
.AddItem "all morning"
.AddItem "all afternoon"
.AddItem "all day"
End With
With cboSenderAddress
.AddItem "London"
.AddItem "Jupiter Station"
.AddItem "Deep Space 9"
End With
End Sub
Codificación del botón 'Borrar'
Al hacer clic en este botón restaurará el formulario a sus valores originales. se vaciarán todos los cuadros de texto y los cuadros combinados (es decir, en blanco) y cualquier opción de restablecimiento grupos. Utilice las listas desplegables en la parte superior de la ventana de código para crear un cmd Claro procedimiento clic.
NOTA: Otra forma de abrir un procedimiento de evento para un control es hacer doble clic en el control de la ventana de diseño de formularios.
Aquí está el código de procedimiento para el formulario de ejemplo:
Private Sub cmdClear_Click()
optGreeting1.Value = True
txtRecipientName.Value = Null
txtRecipientAddress.Value = Null
txtSalutation.Value = Null
txtPosition.Value = Null
cboInterviewLocation.Value = Null
cboInterviewDay.Value = Null
txtInterviewDate.Value = Null
txtInterviewTime.Value = Null
cboInterviewDuration.Value = Null
txtSenderName.Value = Null
txtSenderPosition.Value = Null
cboSenderAddress.Value = Null
End Sub
Codificación el botón "Cancelar"
Este botón permite al usuario para salir sin crear una carta. Al hacer clic en el botón Cancelar se cerrará el formulario de usuario y desecha el documento activo (la carta sin terminar):Private Sub cmdCancel_Click()
Unload Me
ActiveDocument.Close SaveChanges:=False
End Sub
Codificación el botón "OK"
El botón OK tiene que realizar varias tareas. Aquí hay unos ejemplos…
Se debe interpretar la elección del usuario a partir de un grupo de opciones y convertirlo en un valor adecuado para entrar en uno de los marcadores del documento. Para ello, se declara la primera variable (texto) de cadena y el uso de una serie de "Si los estados" para colocar un valor adecuado en la variable dependiendo de cuál de los botones de opción tiene un valor de "verdad":
Dim strGreeting As String
If optGreeting1 = True Then strGreeting = "Yours sincerely"
If optGreeting2 = True Then strGreeting = "Yours faithfully"
If optGreeting3 = True Then strGreeting = "Kind regards"
If optGreeting4 = True Then strGreeting = "Live long and prosper"
A veces un valor simple, como una de las opciones que ofrece el cuadro combinado cboSenderAddress necesita ser traducido en algo más elaborado, tal como una dirección de varias líneas:
Dim strSenderAddress As String
If cboSenderAddress.Value = "London" Then
strSenderAddress = "Galactic Enterprises" _
& vbCrLf & "1001 Federation Plaza" _
& vbCrLf & "London" & vbCrLf & "Earth"
End If
NOTA: En esta sección del código utiliza el carácter de subrayado "_" para romper líneas de código para que sean más fáciles de leer, y el VBA palabra clave "vbCrLf", que representa un salto de línea en la cadena resultante.
Por último, el procedimiento cmdOK_Click debe transferir los valores mantenidos en las variables anteriores, y los consignados en los otros cuadros de texto y los cuadros combinados, a los marcadores en la carta documento. Cada valor se asigna a un marcador con una línea como la siguiente:
ActiveDocument.Bookmarks("Salutation").Range.Text = txtSalutation.Value
Como hay una gran cantidad de ellas, una "Con la declaración" se puede utilizar. El procedimiento completo se muestra a continuación. Tenga en cuenta también el uso de Application.ScreenUpdating para ocultar los cambios que aparecen en pantalla hasta que el proceso finalice. El procedimiento termina mediante el cierre de la forma.
Private Sub cmdOK_Click()
Dim strGreeting As String
Dim strSenderAddress As String
If optGreeting1 = True Then strGreeting = "Yours sincerely"
If optGreeting2 = True Then strGreeting = "Yours faithfully"
If optGreeting3 = True Then strGreeting = "Kind regards"
If optGreeting4 = True Then strGreeting = "Live long and prosper"
If cboSenderAddress.Value = "London" Then
strSenderAddress = "Galactic Enterprises" _
& vbCrLf & "1001 Federation Plaza" _
& vbCrLf & "London" & vbCrLf & "Earth"
End If
If cboSenderAddress.Value = "Jupiter Station" Then
strSenderAddress = "Galactic Enterprises" _
& vbCrLf & "555 Upper Commerce Ring North" _
& vbCrLf & "Jupiter Station"
End If
If cboSenderAddress.Value = "Deep Space 9" Then
strSenderAddress = "Galactic Enterprises" _
& vbCrLf & "140 Main Concourse West" _
& vbCrLf & "UFP Deep Space 9"
End If
Application.ScreenUpdating = False
With ActiveDocument
.Bookmarks("RecipientName").Range.Text = txtRecipientName.Value
.Bookmarks("RecipientAddress").Range.Text = txtRecipientAddress.Value
.Bookmarks("Salutation").Range.Text = txtSalutation.Value
.Bookmarks("Position").Range.Text = txtPosition.Value
.Bookmarks("InterviewLocation").Range.Text = cboInterviewLocation.Value
.Bookmarks("InterviewDay").Range.Text = cboInterviewDay.Value
.Bookmarks("InterviewDate").Range.Text = txtInterviewDate.Value
.Bookmarks("InterviewTime").Range.Text = txtInterviewTime.Value
.Bookmarks("InterviewDuration").Range.Text = cboInterviewDuration.Value
.Bookmarks("Greeting").Range.Text = strGreeting
.Bookmarks("SenderName").Range.Text = txtSenderName.Value
.Bookmarks("SenderPosition").Range.Text = txtSenderPosition.Value
.Bookmarks("SenderAddress").Range.Text = strSenderAddress
End With
Application.ScreenUpdating = True
Unload Me
End Sub
Código para mostrar el formulario de usuario.
El formulario debe ser visualizado de forma automática cuando el usuario abre un documento basado en la plantilla de carta.
Busque la entrada de este documento para su carta documento en el panel Explorador de proyectos del Editor de Visual Basic (si usted no puede verlo, haga doble clic en la carpeta Objetos de Microsoft Word para visualizarlo) y haga doble clic en él para abrir su ventana de código .
Utilice las listas desplegables en la parte superior de la ventana de código para crear un procedimiento Document_New. Este evento se produce cuando se crea un nuevo documento a partir de una plantilla.
Ingrese una línea de código para abrir el formulario de este modo:
Private Sub Document_New()
frmInterviewInvitation.Show
End Sub
Compruebe el Código
El Editor de Visual Basic le han advertido sobre la mayoría de los tipos de errores tipográficos, errores gramaticales y omisiones que pueda haber cometidos al entrar su código. Como comprobación final, abra el menú Depurar de Visual Basic Editor y seleccione Proyecto de compilación. Esto debería alertar de cualquier otra cosa que pudo haber olvidado, como las variables no declaradas. Cuando esté satisfecho de que todo está bien, guardar el documento.
Características adicionales
Esta herramienta podría mejorarse aún más mediante la adición de una rutina de validación para comprobar que toda la información requerida había sido suministrado; código para proteger el documento contra la modificación adicional; la impresión automática del documento completo, etc.
Guardar el documento como una plantilla
Cuando esté satisfecho con el documento debe guardarlo como una plantilla de Word. Cuando posteriormente se utiliza una plantilla que utilice archivos de Word> Nuevo comando para abrir una copia del archivo de plantilla en lugar del propio archivo. Esto significa que el documento de plantilla original permanece sin cambios y se abrirá siempre buscando la manera que quería.
Abra el menú Archivo y seleccione Guardar como para abrir el diálogo Guardar como. En la sección Guardar como tipo seleccione Plantilla de documento continuación, introduzca un nombre adecuado para la plantilla y haga clic en Guardar.
NOTA: Al elegir una ubicación para la plantilla que debe tener en cuenta que cuando el usuario elige Archivo> Nuevo allí se llevan a la carpeta de plantillas predeterminadas. Este es un buen lugar para guardar las plantillas, ya que son fácilmente accesibles desde aquí. Puede almacenar las plantillas en cualquier lugar, pero se debe recordar que ellos deben abrirse siempre para su uso mediante el comando Archivo> Nuevo. Sólo utilice el comando Archivo> Abrir si desea abrir el archivo de plantilla propia para la edición. También puede abrir una plantilla para su uso mediante la localización de su archivo con el Explorador de Windows y el icono haciendo doble clic en el archivo de.
Recuerde probar su plantilla a fondo y corregir cualquier error antes de desatar en cualquier otro usuario.









