Upload
silve-nav
View
13
Download
5
Embed Size (px)
Citation preview
Tema 4:
Programación con Visual Basic para Aplicaciones en SPSS
SPSS se puede programar con dos lenguajes de programación:
Lenguaje de órdenes (*.sps)
Lenguaje de procesos (*.sbs)
Los procesos de SPSS son programas que utilizan el lenguaje de programación Visual Basic
para Aplicaciones (VBA). Estos programas interactúan con SPSS usando los objetos
disponibles para la aplicación estadística. Dado que estos objetos utilizan la tecnología OLE
de Microsoft (Object Linking and Embedding), pueden usarse dentro de las macros de Word
o Excel o dentro de cualquier lenguaje de programación como Visual Basic, C++ o Delphi.
Como ya es conocido, los lenguajes de programación orientados a objetos se basan en la
utilización de tales objetos, que pueden verse como contenedores de datos y código. Los
objetos se definen mediante clases y las aplicaciones interactúan con ellos utilizando sus
propiedades (permiten a una aplicación recuperar y/o cambiar los datos de los objetos) y
métodos (acciones que se programan para que las realice el objeto).
Es posible combinar archivos de procesos y de órdenes para obtener una mayor flexibilidad,
ejecutando un proceso desde un fichero de órdenes o incluyendo las órdenes de SPSS dentro
de un proceso. Sin embargo, un importante problema al trabajar de este modo, es que si se
define una orden para llamar al proceso desde dentro de un fichero de órdenes de SPSS, el
proceso será ejecutado cuando finalice la ejecución del fichero de órdenes. En el caso
contrario ocurre lo mismo, cuando un proceso llama a las órdenes de SPSS; tales órdenes se
ejecutarán sólo cuando haya finalizado la ejecución del proceso.
4.1. Visual Basic para Aplicaciones
SPSS permite utilizar el lenguaje de programación Visual Basic para Aplicaciones (VBA) para
operar con las características del entorno SPSS. Existen un amplio número de programas
incluidos en la distribución de SPSS y que pueden resultar útiles. Por ejemplo, existe un
programa que permite cambiar el texto 'Total' de una tabla, de manera que aparezca con
negrita y en tono azul. El programa contiene comentarios que indica como cambiarlo de
manera que se pueda encontrar el texto 'Total' y ponerlo con otro formato y otro color.
Son muy pocos los conceptos que habría que manejar para utilizar tales programas de SPSS.
VBA opera sobre objetos, por lo que puede referirse a entidades virtuales y definibles del
entorno de SPSS. Todo en una aplicación de SPSS, desde una celda a la tabla completa son
objetos de SPSS, algunos de los cuales se resumen en el siguiente cuadro.
Página 1 de 7Programación con Visual Basic para Aplicaciones en SPSS
15/10/2008file://C:\Documents and Settings\Yolanda\Mis documentos\Facultad\Computacional\...
Figura 4.1.1: Clases de objetos de SPSS
Los procesos funcionan gestionando los objetos mediante propiedades y métodos. Por
ejemplo, las tablas son una clase de objetos. Con los objetos de esta clase, se puede utilizar
el método SelectTable para seleccionar todos los elementos de la tabla y emplear la
propiedad TextColor para cambiar el color del texto seleccionado. Además, cada una de
estas clases posee propiedades y métodos específicos asociados a ella. El conjunto de todas
las clases (o tipos) de objetos se denomina biblioteca de tipos de SPSS.
Otros dos conceptos claves en VBA son los métodos y las propiedades. Los métodos se
refieren a las operaciones que pueden realizarse sobre un objeto. Otro caso es
ResizeColumn, que es un método que modifica la anchura de una columna en una tabla.
Las celdas en una tabla tienen propiedades tales como anchura, altura y color, que pueden
cambiarse con diversos métodos. Una de tales propiedades es TexFontAt, que devolverá el
tipo de fuente en una celda definida por el usuario.
La utilización de objetos es un proceso que consta de dos fases. En primer lugar, se crea una
referencia al objeto (que se denomina obtención del objeto). Después, se utilizan sus
propiedades y métodos para realizar algo. Se obtienen objetos explorando la jerarquía de
objetos y utilizando en cada paso propiedades o métodos de los objetos superiores en la
jerarquía para obtener los objetos ubicados por debajo. Por ejemplo, para obtener un objeto
de tabla, primero debe obtener el documento de resultados que contiene la tabla y, después,
las componentes de ese documento de resultados.
Página 2 de 7Programación con Visual Basic para Aplicaciones en SPSS
15/10/2008file://C:\Documents and Settings\Yolanda\Mis documentos\Facultad\Computacional\...
Cada objeto que se obtiene se almacena en una variable (teniendo claro que lo que
realmente se almacena en la variable es una referencia al objeto). A menudo, uno de los
primeros pasos en la creación de un proceso consiste en declarar variables para los objetos
que se van a necesitar.
Por ejemplo, supongamos que seleccionamos un programa referente a una tabla. Para
ejecutarlo, primero activaríamos la tabla que deseamos modificar haciendo click sobre ella.
Para ejecutar las modificaciones realizadas, se hace click sobre el icono de la barra de
herramientas con una flecha verde.
Figura 4.1.2: Programa VBA para la creación de tablas en SPSS
Es posible también el camino inverso, es decir, se pueden utilizar objetos de SPSS para
trabajar con Visual Basic, pero este aspecto no lo trataremos aquí, si bien el procedimiento
es muy similar al que describimos.
4.2. Programas VBA incluidos en SPSS
Entre los diversos programas incluidos en SPSS, podemos destacar los siguientes:
Ejecutar casos no seleccionados. Repite un análisis factorial o discriminante
utilizando los casos no seleccionados en un análisis anterior. Antes de ejecutar
el proceso se debe seleccionar una tabla Notas producida por una ejecución
anterior de Factor o de Discriminante.
Cambiar significación a p en las etiquetas de columna de las tablas. Se debe
seleccionar la tabla antes de ejecutar el proceso.
Página 3 de 7Programación con Visual Basic para Aplicaciones en SPSS
15/10/2008file://C:\Documents and Settings\Yolanda\Mis documentos\Facultad\Computacional\...
Limpiar navegador. Elimina todas las tablas y las notas de un documento de
resultados. Antes de ejecutar el proceso el documento debe estar abierto en la
ventana del Visor designada.
Insertar estadísticos de una tabla de estadísticos de frecuencias como
notas al pie en la tabla de frecuencias correspondiente para cada
variable. Antes de ejecutar el proceso se debe seleccionar la tabla de
estadísticos de frecuencia.
Aplicar el formato negrita y el color azul a cualquier fila, columna o capa
de datos con la etiqueta Total en una tabla pivote. Se debe seleccionar la
tabla antes de ejecutar el proceso.
Informe de medias. Extrae información de una tabla y escribe los resultados
en varios archivos de resultados ASCII. Antes de ejecutar el proceso se debe
seleccionar la tabla Medias.
Eliminar etiquetas. Elimina todas las etiquetas de fila y columna de una tabla.
Se debe seleccionar la tabla antes de ejecutar el proceso.
Volver a ejecutar órdenes de SPSS. Vuelve a enviar la orden encontrada en
la tabla Notas seleccionada, utilizando el archivo de datos activo. Si no existe
ningún archivo de datos abierto, el proceso intentará leer el archivo de datos
utilizado originalmente. Se debe seleccionar la tabla Notas antes de ejecutar el
proceso.
R cuadrado max. En una tabla de resumen del modelo de regresión, aplica el
formato de negrita y el color azul a la fila correspondiente al modelo que
maximiza la R cuadrado corregida. Se debe seleccionar la tabla de resumen del
modelo antes de ejecutar el proceso.
Un concepto final que es crítico a la hora de usar programas VBA en SPSS es el de objeto
activo. En cualquier instante durante la ejecución de SPSS solamente un objeto está activo
en el entorno. Para que se realice un método o se seleccione una propiedad sobre un objeto,
dicho objeto ha de estar activo. Hay dos modos de activar un objeto. El primero es usar
VBA, el segundo es hacer click sobre el objeto. Así, cuando se pone en primer plano el visor
de resultados, se activa el objeto. O cuando se resalta una celda en una tabla, ese objeto
está activado. Esta característica es especialmente útil cuando se ejecuta un programa sobre
un objeto concreto.
Los programas VBA se abren desde el menú Archivo de la barra de menús, apareciendo la
caja de diálogo con los diversos programas VBA que están incluidos en SPSS. A la derecha
de tal caja de diálogo aparece una ventana en la que se da una breve descripción del
Página 4 de 7Programación con Visual Basic para Aplicaciones en SPSS
15/10/2008file://C:\Documents and Settings\Yolanda\Mis documentos\Facultad\Computacional\...
proceso que se ha seleccionado. Para usar uno de ellos, sólo hay que seleccionarlo de la
caja de diálogo.
Figura 4.2.1: Ventana de edición de programas VBA de SPSS
Para crear un nuevo proceso, hay que cerrar esta caja de diálogo y trabajar en la ventana de
edición de programas VBA.
Figura 4.2.2: Ventana de edición de programas VBA de SPSS
Si se utiliza alguno de los programas VBA implementados en SPSS, es fácil modificarlos
gracias a las líneas de comentarios que aparecen en tales programas.
Página 5 de 7Programación con Visual Basic para Aplicaciones en SPSS
15/10/2008file://C:\Documents and Settings\Yolanda\Mis documentos\Facultad\Computacional\...
4.3. Obtención de objetos de automatización
Obtener un objeto significa crear una referencia a dicho objeto, de manera que se puedan
utilizar sus propiedades y métodos para realizar una acción. Cada referencia a un objeto que
se obtiene se almacena en una variable. Para obtener un objeto, en primer lugar se declara
una variable del tipo apropiado; después se define la variable para el objeto específico. Por
ejemplo, para obtener el documento de resultados designado:
Set objOutputDoc = objSpssApp.GetDesignatedOutputDoc
Set objItems = objOutputDoc.Items
Se utilizan propiedades y métodos de objetos superiores en la jerarquía de objetos para
llegar hasta los objetos de debajo. La segunda de las instrucciones anteriores obtiene el
documento de resultados designado utilizando GetDesignatedOutputDoc, un método
asociado al objeto de aplicación, que es el objeto del nivel más alto. De modo similar, para
obtener un objeto de tabla, en primer lugar se obtiene el documento de resultados que
contiene la tabla, después el conjunto de elementos de ese documento y así sucesivamente
hasta la tabla.
4.4. Archivos de programas VBA y archivos de órdenes de SPSS
Los archivos de órdenes de SPSS, .sps, no son lo mismo que los archivos de programas VBA,
.sbs. Los primeros poseen órdenes escritas en el lenguaje de órdenes de SPSS que permiten
ejecutar procedimientos estadísticos y transformaciones de datos, mientras que los
programas VBA permiten manipular resultados y automatizar otras tareas que se realizan
habitualmente utilizando la interfaz gráfica de los menús y cuadros de dialogo; el lenguaje
de órdenes proporciona un método alternativo de comunicación directa con el soporte del
programa, la parte del sistema que se ocupa de los cálculos estadísticos y las
transformaciones de datos.
Para obtener mayor flexibilidad en la ejecución de un proceso, se pueden combinar archivos
de programas VBA y de órdenes con las salvedades en el orden de ejecución que ya
indicamos anteriormente.
Ejecución de un programa VBA desde un programa SPSS
Para ejecutar un programa VBA desde el editor de órdenes de SPSS, se utiliza el comando
SCRIPT. Para ello se especifica, entre comillas, el nombre del programa VBA que se desea
ejecutar, con la ruta completa en la que se encuentre el archivo, por ejemplo:
SCRIPT ”C:\PROGRAMAS\VBA\CLEAN NAVIGATOR.SBS”
Ejecución de órdenes SPSS desde un proceso VBA
La ejecución de órdenes SPSS puede llevarse a cabo mediante un proceso VBA utilizando el
método ExecuteCommands. Las órdenes SPSS permiten ejecutar transformaciones de
datos y procedimientos estadísticos y producir gráficos.
Página 6 de 7Programación con Visual Basic para Aplicaciones en SPSS
15/10/2008file://C:\Documents and Settings\Yolanda\Mis documentos\Facultad\Computacional\...
La manera más sencilla de construir un archivo de órdenes SPSS es efectuar selecciones en
los cuadros de diálogo y pegar las órdenes asociadas.
Al abrir los cuadros de diálogo mediante los menús de la ventana de proceso, el botón
Pegar insertará todo el código necesario para ejecutar las órdenes desde un proceso. Si no
se utilizan los menús de la ventana de proceso para abrir el cuadro de diálogo, las órdenes
se pegarán en una ventana de órdenes en lugar de en la ventana de proceso.
4.5. Declaración de variables
Aunque no siempre es necesario, es una buena práctica declarar todas las variables antes de
utilizarlas. Esto se realiza empleando instrucciones de declaración, Dim. Por ejemplo,
Dim objOutputDoc As ISpssOutputDoc
Dim objPivotTable As PivotTable
Dim intTipo As Integer
Dim strEtiqueta As String
Cada declaración especifica el nombre y el tipo de variable. Así, la primera declaración de
arriba crea una variable de objeto que se llama objOutputDoc y la asigna a la clase de objeto
ISpssOutputDoc. La variable aún no tiene un valor porque no se ha establecido para un
documento de resultados determinado. Lo que hace la instrucción es declarar que la variable
existe.
Página 7 de 7Programación con Visual Basic para Aplicaciones en SPSS
15/10/2008file://C:\Documents and Settings\Yolanda\Mis documentos\Facultad\Computacional\...