Cómo usar la automatización OLE en Visio

INTRODUCCIÓN

Este artículo contiene información acerca de cómo utilizar Microsoft Visual Basic o Microsoft Visual Basic para Aplicaciones (VBA) para automatizar Microsoft Office Visio2from en otro programa de Microsoft Office.

Microsoft proporciona ejemplos de programación únicamente con fines ilustrativos, sin ninguna garantía expresa o implícita. Esto incluye, pero no se limita, a las garantías implícitas de comerciabilidad o idoneidad para un propósito particular. Este artículo asume que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos que cumplan sus requisitos específicos.
Volver al principio

Información general acerca de la automatización

Automatización (también denominada automatización OLE) en Visual Basic es el proceso de controlar un programa desde otro programa o herramienta de desarrollo externo. Puede automatizar cualquier programa que contenga un modelo de objetosde Visual Basic. Un modelo de objetos es una colección jerárquica de objetos disponibles del programa o expuestos a Visual Basic.

Por ejemplo, el modelo de objetos de Microsoft Visio contiene objetos tales como:
  • Objeto Application o global
  • Objeto de documento
  • Objeto de página
  • Objeto principal
  • Objeto Selection
  • Objeto Shape
  • Objeto de ventana
Cada uno de estos objetos tiene un conjunto único de métodos y propiedades que son necesarios para trabajar con ellos en Visual Basic. Por ejemplo, un objeto Shape puede representar cualquier objeto en una página de dibujo de Visio que se puede seleccionar con el puntero. Por lo tanto, un objeto Shape puede ser una forma, un grupo, una guía, un control o un objeto desde otro programa que está vinculada, incrustada o importado en un dibujo de Visio.

Volver al principio

Introducción

Los ejemplos de código en este artículo muestran cómo controlar Visio de Microsoft Office 2007, Microsoft Office 2003, Microsoft Office 2002, Microsoft Visual Basic 6.0 o desde cualquier programa que incluye una herramienta de desarrollo de Visual Basic. Para automatizar Visio, siga estos cuatro pasos principales:
  1. Agregue una referencia a la biblioteca de tipos de Visio.
  2. Declare una variable como un tipo de objeto de Visio (normalmente Visio.Application o Visio.Documents).
  3. El método GetObject o CreateObject se asigne a la variable de objeto que se declaró en el paso 2.
  4. Utilizar propiedades, métodos y objetos secundarios del objeto de Visio para automatizar Visio.
Volver al principio

Paso 1: Agregue una referencia a la biblioteca de tipos de Visio

Para agregar una referencia a la biblioteca de tipos de Visio mediante el uso de aplicaciones de Microsoft Office como Microsoft Office XP u Office 2003, siga estos pasos:
  1. En Access, PowerPoint, Excel o Word, seleccione macro en el menú Herramientas y, a continuación, haga clic en Editor de Visual Basic.
  2. En el menú Herramientas , haga clic en referencias.

    Nota: Para agregar la referencia de Microsoft Visual Basic 6.0, haga clic en referencias en el menú proyecto .
  3. En la lista de Referencias disponibles, haga clic en una de las siguientes casillas de verificación, según la versión de Visio que está utilizando:
    • En Visio 2007, haga clic para activar la casilla de verificación Biblioteca de tipos de Microsoft Visio 12.0 .
    • En Visio 2003, haga clic para activar la casilla de verificación Biblioteca de tipos de Microsoft Visio 11.0 .
    • Para Visio 2002, haga clic para activar la casilla de verificación Biblioteca de tipos de Microsoft Visio 2002 .
Al agregar la referencia de la biblioteca de tipos de Microsoft Visio, el programa puede tener acceso a Ayuda en línea de Microsoft Visio y el modelo de objetos de Visio. Puesto que las referencias se guardan en cada proyecto, se debe agregar la referencia de la biblioteca de tipos de Visio para cada proyecto de Visual Basic o VBA que desea utilizar para automatizar Visio.

Volver al principio

Paso 2: Declarar la variable de objeto

Para declarar una variable de una dimensión variable, objeto de Visio como un tipo específico de objeto de Visio, como Visio.Application, Visio.Documents o Visio.Page.

Declarar explícitamente que el tipo de objeto se denomina enlace anticipado debido a la aplicación de controlador se conecta o se enlaza el objeto a la aplicación de Visio en tiempo de compilación en lugar de en tiempo de ejecución. Esto le da acceso a listas de auto de Visio y ayuda sensible al contexto y permite al código ejecutarse más eficazmente.

Para obtener más información acerca del enlace de objeto, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
138138 retraso, ID, enlace tipos posibles en VB para aplicaciones

El argumento de Visual Basic de ejemplo siguiente declara la variable AppVisio como un objeto de tipo Visio.Application:

   Dim AppVisio as Visio.Application
Volver al principio

Paso 3: Establecer la variable

Puede utilizar los dos métodos siguientes de Visual Basic para activar Visio:
  • CreateObject
  • GetObject
La diferencia principal es que el método CreateObject crea una nueva instancia de Visio, y el método GetObject utiliza una instancia de Visio ya en ejecución. También puede utilizar GetObject para establecer la variable de objeto a un documento específico de Visio.

El argumento de ejemplo siguiente establece la variable AppVisio a la aplicación de Visio mediante la función CreateObject:
   Dim AppVisio as Visio.Application
Set AppVisio = CreateObject("Visio.Application")

En algunos casos, podría desea utilizar una instancia existente de Visio si Visio ya se está ejecutando, pero crear una nueva instancia si no se está ejecutando Visio. Para ello, cree un controlador de errores que utiliza el método CreateObject en caso de que el método GetObject falla, como se muestra en este ejemplo de código:
   Dim AppVisio As Visio.Application
On Error Resume Next

Set AppVisio = GetObject(, "visio.application")

If AppVisio Is Nothing Then
Set AppVisio = CreateObject("visio.application")
End If


Nota: También puede utilizar la función CreateObject para crear una instancia de Visio que es invisible. Por ejemplo:
Set AppVisio = CreateObject("Visio.InvisibleApp")
A continuación, puede utilizar la propiedad Visible del objeto Application control si la instancia es visible.

Puede utilizar el objeto InvisibleApp con sólo la función CreateObject. Se producirá un error si intenta usarlo con la función GetObject. El objeto InvisibleApp no está disponible en versiones de Visio anteriores a Visio 2000 de Microsoft.

Volver al principio

Paso 4: Utilizar los objetos, métodos y propiedades de Visio

Después de completar los pasos 1 a 3, puede utilizar la variable de objeto de Visio para automatizar Visio.

La siguiente macro de ejemplo utiliza Automatización para iniciar Visio, cree un nuevo dibujo (documento) basado en la plantilla Diagrama básico, coloca un rectángulo, agrega texto y guarda el dibujo y sale de Visio.
Sub AutoVisio()

Dim AppVisio As Visio.Application ' Declare an Instance of Visio.
Dim docsObj As Visio.Documents ' Documents collection of instance.
Dim DocObj As Visio.Document ' Document to work in.
Dim stnObj As Visio.Document ' Stencil that contains master.
Dim mastObj As Visio.Master ' Master to drop.
Dim pagsObj As Visio.Pages ' Pages collection of document.
Dim pagObj As Visio.Page ' Page to work in.
Dim shpObj As Visio.Shape ' Instance of master on page.

' Create an instance of Visio and create a document based on the
' Basic Diagram template. It doesn't matter if an instance of
' Visio is already running, CreateObject will run a new one.
Set AppVisio = CreateObject("visio.application")

Set docsObj = AppVisio.Documents

' Create a document based on the Basic Diagram template that
' automatically opens the Basic Shapes stencil.
Set DocObj = docsObj.Add("Basic Diagram.vst")

Set pagsObj = AppVisio.ActiveDocument.Pages

' A new document always has at least one page, whose index in the
' Pages collection is 1.
Set pagObj = pagsObj.Item(1)

Set stnObj = AppVisio.Documents("Basic Shapes.vss")
Set mastObj = stnObj.Masters("Rectangle")

' Drop the rectangle in the approximate middle of the page.
' Coordinates passed with the Drop method are always inches.
Set shpObj = pagObj.Drop(mastObj, 4.25, 5.5)

' Set the text of the rectangle.
shpObj.Text = "This is some text."

' Save the drawing and quit Visio. The message pauses the program
' so you can see the Visio drawing before the instance closes.
DocObj.SaveAs "MyDrawing.vsd"
MsgBox "Drawing finished!", , "AutoVisio (OLE) Example"

' Quit Visio.
AppVisio.Quit

' Clear the variable from memory.
Set AppVisio = Nothing

End Sub

Volver al principio

Referencias

Sitios Web de Microsoft Visio Developer

Para obtener más información acerca de cómo automatizar Visio, visite el siguiente sitio Web de Microsoft:Para obtener más información acerca de cómo desarrollar soluciones de Microsoft Visio, visite el siguiente sitio Web de Microsoft:

Kits de desarrollo de Software de Visio

Para descargar el Kit de desarrollo de Software de Visio 2002, visite el siguiente sitio Web de Microsoft:
Para descargar el Kit de desarrollo de Software de Visio 2003, visite el siguiente sitio Web de Microsoft:

Grupos de noticias

El siguiente grupo de noticias de peer-to-peer está disponible para ayudarle a interactuar con otros usuarios de Visual Basic para Aplicaciones:
microsoft.public.vb.ole.automation
microsoft.public.visio.developer.vba

Ayuda de Visual Basic

Para obtener más información acerca de cómo utilizar la función CreateObject , en el Editor de Visual Basic, haga clic en Ayuda de Microsoft Visual Basic en el menú Ayuda , escriba función createobject en el cuadro Buscar y, a continuación, haga clic en Buscar para ver los temas que se devuelven.

Para obtener más información acerca de cómo utilizar la función GetObject , en el Editor de Visual Basic, haga clic en Ayuda de Microsoft Visual Basic en el menú Ayuda , escriba función getobject en el cuadro Buscar y, a continuación, haga clic en Buscar para ver los temas que se devuelven.

Volver al principio
Propiedades

Id. de artículo: 309603 - Última revisión: 22 ene. 2017 - Revisión: 1

Comentarios