7
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 7 Programación con Visual Basic para Aplicaciones en SPSS 15/10/2008 file://C:\Documents and Settings\Yolanda\Mis documentos\Facultad\Computacional\...

temaSPSS4

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\...