EN ESTA TAREA
Resumen
En el Editor de Visual Basic de Microsoft Word, puede crear referencias a bibliotecas de objetos o código en un documento externo o una plantilla. Esto permite llamar a procedimientos externos como si estuvieran escritos en su propio proyecto. Tenga en cuenta que pueden producirse problemas si los archivos que se hace referencia se mueven o se dañaran. Pueden producirse errores de almacenamiento de macros y el cuadro de diálogo referencias puede ser inaccesible.
Este artículo describe cómo crear referencias a Microsoft Visual Basic para Aplicaciones en otros proyectos (VBA), cómo comprobar que las referencias son correctas y cómo quitar mediante programación las referencias incorrectas. Conocimientos previos necesarios:-
Habilidades fundamentales de programación de VB/VBA
-
Conocimientos básicos de Microsoft Office
-
Habilidades de explorador de Windows
En este artículo, utilice el Editor de Visual Basic para demostrar cómo:
-
Crear una referencia al proyecto de VBA personalizado.
-
Escribir código para comprobar la existencia de la referencia.
-
Escribir código para quitar una referencia incorrecta.
-
Escribir código para agregar la referencia de atrás.
Configurar los permisos de seguridad del proyecto
-
En Microsoft Word, en el menú Herramientas , elija Macroy, a continuación, haga clic en seguridad para mostrar el cuadro de diálogo de seguridad .
-
En la ficha Nivel de seguridad , establezca el nivel de seguridad a medio, por lo que tiene la opción de habilitar las macros.
-
En la ficha Fuentes de confianza , compruebe que está activada la casilla de verificación Confiar en el acceso al proyecto de Visual Basic . Esto permite utilizar código de VBA en sus proyectos.
-
Haga clic en Aceptar.
En Word 2007, siga estos pasos:
-
En la ficha Programador , haga clic en Seguridad de macros en el grupo de código .
-
En el panel izquierdo, haga clic en Configuración de macros.
-
En el panel derecho, haga clic en Habilitar todas las macrosy, a continuación, haga clic en para seleccionar la casilla de verificación Confiar en el acceso al modelo de objetos de proyecto VBA .
-
Haga clic en Aceptar.
Crear la referencia del proyecto
Creará un proyecto que contiene un procedimiento y, a continuación, cree una referencia a ese proyecto de un nuevo proyecto VBA.
Para crear el archivo de biblioteca:-
Crear un nuevo documento en Microsoft Word y, a continuación, guardarlo como una plantilla siguiendo estos pasos:
-
En el menú archivo , haga clic en Guardar como para mostrar el cuadro de diálogo Guardar como .
Nota: En Word 2007, haga clic en el Botón de Microsoft Officey, a continuación, haga clic en Guardar como. -
Cambie el cuadro nombre de archivo a Refme.
-
Cambie el cuadro Guardar como tipo a
Documento de plantilla (* .dot). Nota: En Word 2007, cambie el cuadro Guardar como tipo a Plantilla de Word 97-2003 (* .dot) -
Guarde la plantilla en la carpeta "C:\TestFiles" (debe crear esta carpeta si no existe).
-
-
Presione ALT+F11 para iniciar el Editor de Visual Basic.
-
En el explorador del proyecto, seleccione TemplateProject (Refme). En el menú Insertar , haga clic en módulo. Esto agrega un módulo nuevo denominado "Module1" al proyecto.
-
En la ventana código, escriba el siguiente código de Module1:
Public Sub CallMe()
Msgbox "Hello World!" End Sub -
Haga clic en el procedimiento sub y, a continuación, en el menú Ejecutar , haga clic en Ejecutar Sub/UserForm. Aparecerá un cuadro de mensaje "¡Hello World!". Cierre este cuadro de mensaje.
-
En el menú Ver , haga clic en Microsoft Word (ALT+F11) para volver a Word.
-
En Word, guarde y cierre el archivo de plantilla.
Para crear la referencia:
-
En Word, cree un nuevo documento y, a continuación, guárdelo como "Myproj.doc" en la carpeta "C:\TestFiles".
-
Inicie el Editor de Visual Basic (presione ALT+F11). En el Explorador de proyectos, seleccione el proyecto (Myproj).
-
Crear una referencia a la plantilla Refme como sigue:
-
En el menú Herramientas , haga clic en referencias.
-
En el cuadro de diálogo referencias , haga clic en Examinar.
-
En el cuadro de diálogo Agregar referencia , establezca tipo de archivos en documentos de Word (* .doc; * .dot).
Nota: En Word 2007, establezca tipo de archivos en documentos de Word (*.docm; *.dotm.doc; * .dot). -
En la carpeta "C:\TestFiles", seleccione la plantilla Refme .
-
Haga clic en Abrir para volver al cuadro de diálogo referencias .
-
Haga clic en Aceptar para volver al Editor de Visual Basic.
-
-
En el Explorador de proyectos, expanda el proyecto (Myproj). Expanda referencias y compruebe que la lista de referencia incluye referencia a Refme.dot.
-
En el menú Insertar , haga clic en módulo para insertar un nuevo módulo en el proyecto. Escriba el código siguiente en el módulo para llamar al procedimiento CallMe:
Public Sub Test()
Call CallMe End Sub -
Probar el procedimiento para comprobar que funciona y, a continuación, volver a Word.
-
Guardar y cerrar el archivo del documento y, a continuación, salga de Word.
Comprobar mediante programación la referencia del proyecto
Ahora se interrumpirán deliberadamente la referencia y, a continuación, comprobar la exactitud de la referencia.
Para interrumpir la referencia:-
En el Explorador de Windows (haga clic en el menú Inicio de Windows y, a continuación, haga clic en Explorar en el menú contextual), cambie el nombre de la plantilla Refme.dot a "Refme.old". Para ello, haga clic en Refme.dot y, a continuación, haga clic en Cambiar nombre en el menú contextual. Escriba refme.old y, a continuación, presione ENTRAR.
-
Vuelva a Word y, a continuación, vuelva a abrir el documento "Myproj.doc".
-
Dado que el nivel de seguridad está establecido en medio, se le pedirá si desea habilitar o deshabilitar las macros de este documento. Haga clic en Habilitar Macros.
Nota: Este comportamiento no se produce en Word 2007. -
Inicie el Editor de Visual Basic (presione ALT+F11) y, a continuación, ejecute el procedimiento Test. Haga clic en Aceptar en el mensaje de error de compilación siguiente:
No se puede encontrar el proyecto o biblioteca
-
Debe encontrarse en modo de interrupción (hay una banda amarilla en la línea Sub). En el menú Ejecutar , haga clic en Restablecer para volver al modo de diseño.
-
En el menú Herramientas , haga clic en referencias para mostrar el cuadro de diálogo referencias . Verá que Refme.dot está marcado como "no disponible".
-
Haga clic en Cancelar para cerrar el cuadro de diálogo referencias .
Para comprobar mediante programación las referencias que faltan:
-
En el Explorador de proyectos, seleccione el proyecto (Myproj).
-
En el menú Herramientas , haga clic en referencias y, a continuación, agregue una referencia a Microsoft Visual Basic para Aplicaciones en la biblioteca de extensibilidad 5.3. Esta biblioteca contiene objetos que hacen referencia a los proyectos VBA.
-
Antes de hacer clic en Aceptar, debe comprobar que la nueva referencia se agrega por encima de la referencia "Falta". Haga clic varias veces en la flecha para cambiar la prioridad, mueva la nueva referencia por encima de la referencia "Falta" y, a continuación, haga clic en Aceptar.
-
En el módulo, cree un nuevo procedimiento sub denominado "CheckReference" y, a continuación, escriba el siguiente código:
Sub CheckReference()
Dim vbProj As VBProject ' This refers to your VBA project. Dim chkRef As Reference ' A reference. ' Refer to the activedocument's VBA project. Set vbProj = ActiveDocument.VBProject ' Check through the selected references in the References dialog box. For Each chkRef In vbProj.References ' If the reference is broken, send the name to the Immediate Window. If chkRef.IsBroken Then Debug.Print chkRef.Name End If Next End Sub -
En el menú Ver , haga clic en Ventana Inmediato (CTRL+g) para abrir la ventana Inmediato.
-
Ejecute el procedimiento sub CheckReference. El nombre y la ubicación del archivo se muestra en la ventana Inmediato.
Quitar y restablecer la referencia del proyecto
Esta sección describe cómo quitar y reinstalar una referencia mediante programación.
Para quitar una referencia que falta:-
En el procedimiento sub CheckReference, cambie la instrucción Debug.Print como sigue. Esto quita las referencias que falten del proyecto:
vbProj.References.Remove chkRef
-
Ejecute el procedimiento CheckReference.
-
Compruebe que se ha quitado la referencia en el cuadro de diálogo referencias (en el menú Herramientas , haga clic en referencias).
Para restablecer (Agregar) una referencia:
-
En el Explorador de Windows, cambie el nombre Refme.old a "Refme.dot".
-
Vuelva al proyecto Myproj en el Editor de Visual Basic en Word.
-
Escribir un nuevo procedimiento sub denominado "AddReference" como sigue:
Sub AddReference()
Dim vbProj as VBProject Set vbProj = ActiveDocument.VBProject vbProj.References.AddFromFile "C:\TestFiles\Refme.dot" End Sub -
Ejecute el procedimiento AddReference.
-
Compruebe que se ha reanudado la referencia a Refme.dot. Puede ver las referencias en el Explorador de proyectos o al hacer clic en referencias en el menú Herramientas .
Solución de problemas
-
Si hace referencias al archivo nativo de una aplicación, debe tener la extensión de archivo nativo. De lo contrario, puede experimentar problemas cuando usa la referencia. Para ver estos problemas, intente hacer una referencia al archivo Refme.old en lugar del archivo Refme.dot en el ejemplo anterior de este artículo.
-
Si está trabajando con un componente registrado, puede agregar una referencia GUID para el proyecto. Utilice el método AddFromGUID para ello.