Documentos de Académico
Documentos de Profesional
Documentos de Cultura
A la hora de trabajar con Visual Basic, deben tenerse claros ciertos conceptos de lo
que se llama programación orientada a objetos (OOP). No nos extenderemos
demasiado sobre la OOP, pero si definiremos los conceptos de Objeto, Propiedades
y Métodos.
- Objetos.
Un objeto es una entidad que tiene asociado un conjunto de métodos, eventos y
propiedades. Cualquier objeto está definido por una clase. Ejemplo: Una caja de
texto (TextBox) en la cual podemos escribir cualquier línea es un objeto.
-
Propiedades.
Son las características que posee un objeto o un formulario (ventana de Windows).
Ejemplo: Color de fondo del formulario, Fuente de texto de un TextBox, ….
- Métodos.
Los métodos son funciones internas de un determinado objeto que permite realizar
funciones sobre él o sobre otro objeto
- Eventos.
Los eventos son acciones que se pueden realizar en cualquier control: clic, doble clic,
movimiento del ratón. A estos eventos se les puede asociar código para que se
ejecute al producir el evento.
Todo lo que hacemos en un programa Visual Basic está generado por medio de
eventos
Repasemos a continuación todos estos conceptos, pero ahora desde el punto de vista
de algunos de los objetos que nos encontraremos en Excel como WorkSheet (Objeto
hoja de cálculo) o Range (Objeto casilla o rango de casillas).
Un objeto Range está definido por una clase donde se definen sus propiedades,
recordemos que una propiedad es una característica, modificable o no, de un objeto.
Entre las propiedades de un objeto Range están Value, que contiene el valor de la
casilla, Column y Row que contienen respectivamente la fila y la columna de la
casilla, Font que contiene la fuente de los caracteres que muestra la casilla, etc.
Range,
Range, como objeto, también tiene métodos, recordemos que los métodos sirven
llevar a cabo una acción sobre un objeto. Por ejemplo, el método Activate
Activate, hace activa
una celda determinada, Clear
Clea r , borra el contenido de una celda o rango de celdas,
Copy,
Copy, copia el contenido de la celda o rango de celdas en el portapapeles.
- Conjuntos.
Un conjunto es una colección de objetos del mismo tipo, para los que conozcan algún
lenguaje de programación es un array de objetos. Por ejemplo, dentro de un libro de
trabajo puede existir más de una hoja (WorkSheet), todas las hojas de un libro de
trabajo forman un conjunto, el conjunto WorkSheets.
Cada elemento individual de un conjunto se referencia por un índice, de esta forma, la
primera, segunda y tercera hoja de un libro de trabajo, se referenciarán por
WorkSheets(1), WorkSheets(2) y WorkSheets(3).
- Objetos de Objetos.
Es muy habitual que una propiedad de un objeto sea otro objeto.
En Excel, el objeto WorkSheets tiene la propiedad Range que es un objeto, Range
tiene la propiedad Font que es también un objeto y Font tiene la propiedad Bold
(negrita). Dicho de otra forma, hay propiedades que devuelven objetos, por ejemplo, la
propiedad Range de un objeto WorkSheet devuelve un objeto de tipo Range.
Hay una sutil diferencia entre las definiciones del título. Programación orientada a
Objetos, significa que el programador trabaja con objetos fabricados por él mismo, es
decir, el programador es quien implementa las clases para luego crear objetos a partir
de ellas. Lo que haremos nosotros, por el momento, será utilizar objetos ya definidos
por la aplicación Excel (WorkSheets, Range,...) sin implementar ninguno de nuevo, por
lo que en nuestro caso es más correcto hablar de programación basada en objetos.
Observe que esta es una de las grandes ventajas de la OOP, utilizar objetos definidos
por alguien sin tener que conocer nada sobre su implementación, sólo debemos
conocer sus propiedades y métodos y utilizarlos de forma correcta.
Con Visual Basic podemos crear cualquier tipo de aplicación para que funcione bajo
Windows, utilizando así todos y cada uno de los elementos que forman parte de éste.
Si estamos familiarizados con Windows conoceremos de sobra estos elementos y qué
es lo que solemos hacer con cada uno de ellos.
VBA (Visual Basic for Applications) Es una herramienta menos avanzada que VB y
diseñada para ser implementada en las distintas aplicaciones Windows y poder
desarrollar programas para ellas. Incluye importantes implementaciones para macros y
guiones, la sintaxis de programación Visual Basic casi completa un depurador y un
entorno de desarrollo integrado.
En general la estructura de menús y barra de herramientas es muy parecida, si bien
existen ausencias en VBA con respecto a Visual Basic, como por ejemplo la capacidad
de compilar proyectos o de abrir proyectos, entre otras.
Los objetos que proporciona AutoCAD para su manejo desde programas VBA están
divididos según una jerarquía que deberemos seguir a la hora de llamarlos o referirnos
a ellos. La plantilla que se muestra a continuación nos será muy útil a la hora de
programar, ya que establece dicha jerarquía.
En Visual Basic es factible añadir al entorno nuevos objetos creados por nosotros para
luego ser utilizados. Lo que se ha hecho en VBA es precisamente eso. Estos objetos
tienen sus propiedades y métodos, al igual que los demás. Existen objetos de
entidades individuales de dibujo (líneas, círculos, arcos...) con sus propiedades (color,
capa, tipo de línea...) y métodos (copiar, mover, escalar).
También se han definido otros objetos no gráficos como son el Espacio Modelo, el
Espacio Papel y los bloques. Estos se consideran una colección de objetos de
entidades individuales de dibujo y tienen también sus propiedades para, por ejemplo,
saber cuántas entidades simples contienen, y sus métodos para, por ejemplo, añadir
nuevas entidades a la colección.
El propio documento actual de AutoCAD está definido como un objeto y tiene sus
propiedades (camino de acceso, límites...) y métodos (guardar, regenerar...). Dentro
de él se encuentran los mencionados anteriormente, además de otras colecciones
como el conjunto de capas, de estilos de texto, etcétera, cada una con propiedades y
métodos.
Y todo ello está incluido en el objeto más exterior, que es la aplicación de AutoCAD.
INTERACCION ENTRE DISTINTAS APLICACIONES DE WINDOWS EMPLEANDO
VISUAL BASIC
Para abrir cualquier aplicación de Windows desde Visual Basic o desde un módulo de
VB de algún programa, es necesario incluir en las referencias de nuestro proyecto las
librerías correspondientes, para tener a disposición los objetos de la aplicación con la
que deseamos interactuar.
Por defecto, al abrir el editor de Visual Basic de una aplicación, existe ya definido un
objeto, que por lo general se refiere al documento actual de cada aplicación. Este
objeto es la entrada por defecto que aparece en el Explorador de proyectos. A
continuación, se describen estos objetos para cada una de las aplicaciones que nos
interesan.
Aplicación Objeto Descripción
AutoCAD ThisDrawing Se refiere al documento actual activo de AutoCAD.
Word ThisDocument Se refiere al documento actual activo de Word
Excel ThisWorkBook Se refiere al libro activo de Excel
Para abrir una aplicación de Windows desde VB o desde VBA de algún programa es
necesario agregar la referencia a la librería de dicha aplicación, como se explicó
anteriormente. El código requerido para hacerlo se muestra a continuación.
Con estas pocas líneas es posible abrir AutoCAD, Word y Excel. Si la propiedad
Visible de cada uno de los objetos Application se coloca en False, la aplicación correrá
en Windows, y se podrá realizar operaciones con ella, pero, no va a estar visible para
el usuario en el computador.
Agregar un documento
Una vez ya hemos abierto una nueva aplicación de AutoCAD, podemos empezar a
interactuar con ella. Para dar un ejemplo de lo que se puede desarrollar vamos a
dibujar una línea desde VB.
Los objetos gráficos de dibujo hemos de declararlos previamente como tales. Para ello
deberemos definir un nombre de variable que almacenará el objeto; es a lo que se
refiere ObjLinea. Esta variable puede ser declarada como Object simplemente o como
un objeto especial de VBA para AutoCAD que representa el tipo de objeto que
almacenará. Este objeto especial tiene diferentes nombres según el objeto que
almacene; su sintaxis podría definirse así: AcadObjeto, es decir, primero la cadena fija
Acad y luego el nombre del objeto.
Así, por ejemplo, si tras trazar la línea del ejemplo anterior quisiéramos cambiarla
al color rojo, únicamente deberíamos añadir la siguiente línea al programa (tras Set
ObjLínea...):
ObjLinea.Color = 1
Color es una propiedad de la línea, por lo que lo único que hacemos es cambiarle
el valor como a cualquier otra propiedad en Visual Basic: indicando el objeto,
seguido de un punto de separación, la propiedad, un signo de igual y el nuevo
valor. Así de simple. Algunas propiedades se tratan de otra forma.
Los números de filas, columnas y niveles serán enteros (Integer) y las distancias
lo más lógico es que sean de doble precisión (Double).
Filas=8 : Columnas=3
Dfilas=110 : dcolumnas=50
La variable arreglo debe declararse como una variable tipo Variant. Se nota que no se
requiere emplear la palabra Set debido a que arreglo no es una variable de Objeto sino
una variable tipo Variant.
Para establecer valores de celdas individuales en una hoja de cálculo podemos usar la
colección Cells o la propiedad Range del objeto WorkSheet. El objeto WorkSheet se
refiere a una hoja de cálculo de Excel, si se quiere trabajar sobre la hoja activa se
puede consultar la propiedad ActiveSheet.
With excelApp.ActiveSheet
.Cells(1,2).Value= PuntoInicial(1)
.Cells(1,3).Value= PuntoInicial(2)
.Cells(1,4).Value= PuntoInicial(3)
.Cells(2,1).Value=”Punto Final”
.Cells(2,2).Value= PuntoFinal (1)
.Cells(2,3).Value= PuntoFinal (2)
.Cells(2,4).Value= PuntoFinal (3)
End With
Para insertar una imagen en Word generada en AutoCAD hay que seguir dos pasos:
primero, exportar el archivo de imagen desde AutoCAD, y segundo importar la imagen
desde Word.
Para exportar un archivo desde AutoCAD podemos hacer uso del método Export,
cuyos parámetros son: un String, que contiene la ruta y el nombre del archivo que
vamos a generar, la extensión del archivo a exportar (“BMP” para archivos gráficos), y
el Selection Set que contiene las entidades gráficas que van a ser incluidas dentro del
archivo gráfico generado. Este procedimiento se ilustra en el siguiente fragmento de
código:
Ahora tenemos a disposición, y en una ruta conocida, el archivo gráfico que deseamos
insertar en Word. Para insertar la imagen hacemos uso del objeto de Shapes, que
incluye todas las formas del contenido principal de un documento o de todos los
encabezados y pies de página del mismo. Un objeto Shape, miembro del conjunto
Shapes, representa un objeto de la capa de dibujo, como una Autoforma, una forma
libre, un objeto OLE, un control ActiveX o una imagen.
Para insertar la imagen se hará uso del método AddPicture de Shapes. La sintaxis del
método se muestra a continuación:
LinkToFile Variant opcional. True para vincular la imagen al archivo desde el que
fue creada. False para que la imagen sea una copia independiente del archivo. El
valor predeterminado es False.
Así, el código requerido para insertar la imagen que exportamos desde AutoCAD será
el siguiente:
Se han detectado problemas en los archivos gráficos exportados por AutoCAD 2000,
por lo tanto, vamos a indicar una forma alternativa de insertar una imagen de AutoCAD
en Word, al acceder a la línea de Comandos y hacer uso del PortaPapeles.
Un método muy útil es el método SendCommand con el que podemos tener acceso a la
línea de Comandos de AutoCAD y ejecutar cualquier instrucción que no deseemos o
no tengamos disponible en VB. El parámetro del método es un String que
corresponde a la lista de comandos que queremos ejecutar. Para nuestro ejemplo
vamos a ejecutar el comando CopyLink, con el que colocamos una imagen del dibujo
de AutoCAD en el PortaPapeles. En seguida se muestra el fragmento de código que
realiza esta operación:
Lo anterior fue un ejemplo sencillo de lo que se puede hacer para interactuar entre
aplicaciones empleando Visual Basic, no es un tutorial ni un curso de VBA, por lo cual
es necesario tener conocimientos previos de VB. Sin embargo, a partir de este
ejemplo se puede ver el potencial que ofrecen las herramientas desarrolladas por
Microsoft para crear nuevas aplicaciones empleando objetos y aplicaciones
desarrolladas anteriormente.