SAS y Microsoft Excel – Parte I
Microsoft Excel se encuentra en el día a día de nuestro trabajo. Quién hoy en día no recibe información en Excel que necesita ser procesada en SAS? Adicionalmente a lo anterior, cuántos de ustedes no necesitan presentar datos, estadísticas y reportes en Excel de datos e información contenida en SAS?
Esta serie de entregas pretende dar una introducción a los métodos más comunes para llevar a cabo estas “diligencias”. Los métodos de point & click no serán discutidos aquí pues es algo que cualquiera de ustedes en rato de ocio puede aprenderlo sin mayor dificultad.
Para que todos puedan seguir los ejemplos paso a paso vamos a utilizar sashelp.shoes. Les recomiendo que creen una carpeta llamada Lasug en el directorio raíz (C:\Lasug) para que sus programas corran sin muchos cambios.
El autor asume (es decir yo) que el lector (imagino que ya sabes de quién estoy hablando
utiliza la versión SAS 9.1.3 ó EG 4.1, es importante destacar este punto puesto que estaré mencionando muchas de las nuevas características de estas versiones.
Un detalle más! Al contrario de la mayoría de los casos voy a empezar explicando como exportar y crear archivos de Excel y luego esos mismos archivos serán usados para importar/leerlos en SAS.
Exportando a Excel
Método 1: PROC EXPORT
El Proc Export lee data desde un SAS data set y la escribe/exporta a un formato de archivo externo como Ms Excel, Ms Access, Dbase, CSV etc…
La sintaxis básica es la siguiente:
PROC EXPORT DATA=SAS-data-set
OUTFILE=”filename” OUTTABLE=”tablename” ;
DATA=ibref.SAS-data-set: identifica el archive de SAS que se desea exportar. Si no se especifica el procedimiento exporta el último data set generado en la sesión abierta.
OUTFILE=”filename”: especifica la ruta y el nombre del archive de salida. Se puede utilizar la sentencia FILENAME para referenciar el archivo previamente.
DBMS=identifier: Identifica el formato de archivo a exportar. Para exportar a Excel, Proc Export crea un XLS para la versión de Excel especificada en el DBMS.
La siguiente lista indica que versión de Excel debe especificarse en el DBMS según la versión que se desea exportar:
.nobr br { display: none }
| Specification | Excel 2002 | Excel 2000 | Excel 97 | Excel 5.0 | Excel 4.0 |
|---|---|---|---|---|---|
| EXCEL2002 | Yes | Yes | Yes | No | No |
| EXCEL2000 | Yes | Yes | Yes | No | No |
| EXCEL97 | Yes | Yes | Yes | No | No |
| EXCEL5 | Yes | Yes | Yes | Yes | No |
| EXCEL4 | Yes | Yes | Yes | Yes | Yes |
Sheet=worksheetname: Es opcional y específica el nombre de la hoja de Excel en la que se desea exportar los datos
Ejemplo1: Importando sashelp.shoes a Shoes.xls
PROC EXPORT data=sashelp.shoes
dbms=excel2002 REPLACE
outfile=”C:\Lasug\Shoes.xls”;
QUIT;

Es una buena práctica añadir la opción REPLACE para evitar un error de reemplazo en caso de que el archivo de Excel ya exista. Por otra parte habrán notado que SAS automáticamente renombre la hoja de Excel (Sheet1 o Hoja1) con el nombre del archivo de salida.
Ejemplo 2: Importando información referente a la región de Canada
PROC EXPORT data=sashelp.shoes(where=(Region=’Canada’))
dbms=excel2002 REPLACE
outfile=”C:\Lasug\Shoes.xls”;
QUIT;

El resultado muestra que solo la información de la región de Canada fue exportada a Excel pero el nombre de la hoja continua siendo Shoes.
Ejemplo 3: Importando información referente a distintas regiones en hojas distintas.
PROC EXPORT data=sashelp.shoes(where=(Region=’Canada’))
dbms=excel2002 REPLACE
outfile=”C:\Lasug\Shoes.xls”;
Sheet=”Canada”;
QUIT;
PROC EXPORT data=sashelp.shoes(where=(Region=’Africa’))
dbms=excel2002 REPLACE
outfile=”C:\Lasug\Shoes.xls”;
Sheet=”Africa”;
QUIT;

El nuevo archivo contiene las hojas SHOES (esta con información de Canada si ejecutaste el ejemplo2), Canada y Africa utilizando la opción Sheet.
El código anterior es relativamente simple cuando solo se desea exportar hacia 2 ó 3 hojas de Excel pero cuando se requieren exportar cientos de hojas esto se hace tedioso a demás de muy poco elegante.
Aquí tienen un ejemplo usando macros para automatizar este proceso. La explicación de la macro está fuera del alcance de este tutorial y se las dejo a ustedes.
Ejemplo 4: Usando Macros
%MACRO exp2xls(dsn=,output=,region=);
PROC EXPORT data=&dsn(where=(Region=®ion))
dbms=excel2002 REPLACE
outfile=”C:\Lasug\&output..xls”;
%if ®ion=region %then
%do;
Sheet=”Todas Las regiones”;;
%end;
%else
Sheet=®ion;;
QUIT;
%MEND;
%exp2xls(dsn=sashelp.shoes,output=Shoes2,region=region);
%exp2xls(dsn=sashelp.shoes,output=Shoes2,region=”Africa”);
%exp2xls(dsn=sashelp.shoes,output=Shoes2,region=”Canada”);
%exp2xls(dsn=sashelp.shoes,output=Canada,region=”Canada”); /*salida a diferente archivo*/
SASludos,
Alberto
Hola, hay alguna manera de hacer el proceso inverso ¿? es decir, utilizar el acceso a datos SAS desde Excel.Hay alguna manera establecer una conexión desde excel con SAS ¿?Muchas gracias,un saludo.