Automatizacion de Excel desde VFP

From codeWiki
Jump to: navigation, search

Por: Angel Ferreira


Contents

COM (Modelos de Objetos Componentes)

Dicho en otras palabras COM es el estándar de Microsoft para la comunicación entre aplicaciones Windows, es decir, una gran herramienta que nos permitirá interactuar entre Visual FoxPro con aplicaciones Microsoft como Excel, Word, Power Point y otras aplicaciones Microsoft como Outlook, etc.

En este capítulo, estudiaremos la forma de interactuar desde VFP hacia esa gran herramienta conocida como MICROSOFT EXCEL.

Aprenderemos cosas tales como:

  • Crear Objetos en VFP para manejar una Hoja de Excel
  • Crear Libros de Excel nuevos y abrir libros existentes
  • Enviar datos desde VFP hacia Excel


Crear Objetos en VFP para manejar una hoja de Excel

Lo primero que tenemos que conocer es que en VFP podemos crear una instancia de un Objeto COM y convertirlo de esta manera en un objeto manipulable para nuestro lenguaje de programación (VFP). Para crear un Objeto COM, cualquiera que sea, se utiliza en VFP la Función CREATEOBJECT(), la cual requiere como parámetro el nombre de la aplicación a instanciar, en este caso Microsoft Excel.

Dicho esto, si queremos que nuestra aplicación se comunique con Microsoft Excel, lo primero que debemos hacer es crear el objeto com correspondiente:

Local oExcel        && Variable que contendrá la instancia del objeto COM EXCEL 
oExcel = CreateObject("Excel.Application").

( Les invito a ejecutar este código en un programa, o en la ventana de Comandos de VFP)

Bien, ya dimos el primer paso, pero si ejecutaron el ejemplo se dieron cuenta que a nivel visual no ocurrió nada interesante, es debido a que los objetos COM se crean con la propiedad VISIBLE en Falso, entonces para ver nuestra Hoja de Excel que acabamos de crear, debemos ejecutar la siguiente instrucción.

oExcel.Visible = .T.

En estas pocas líneas hemos aprendido los primeros pasos para trabajar con Objetos COM, vimos como crear un objeto COM tipo EXCEL y como colocarlo Visible frente a los ojos del Usuario. Ahora ya sabemos que el Objeto COM es como un objeto mas dentro de VFP el cual tiene métodos y propiedades y que es de manejo sencillo para cualquier programador que haya trabajado con un par de Objetos VFP.


Crear libros de Excel nuevos y abrir libros existentes

Luego de haber creado el Objeto COM EXCEL, lo que debemos es aprender algunos de sus métodos y propiedades para poder abrir libros existentes y poder crear libros nuevos:

ObjetoComExcel.Workbooks.Add 

El método Add de la colección de objetos Workbooks nos permite anexar a nuestro Objeto EXCEL COM un libro nuevo para trabajar con una hoja de excel totalmente operativa.

Por favor ejecute el siguiente ejemplo desde un programa VFP o desde la ventana de Comandos:

Local oExcel
oExcel = CreateObject("Excel.Application")
oExcel.Visible = .T.
oExcel.Workbooks.Add

Observe que desde este momento, ha creado desde VFP un libro de excel nuevo con una hoja totalmente operativa para trabajar.

ObjetoComExcel.Workbooks.Open("Archivo de Excel") 

El método Open del Objeto Workbooks nos permite abrir un libro o una hoja de excel existente y la deja operativa para trabajar con esta. Para ver este efecto, por favor cree una hoja de excel y grábela en su disco con algún tipo de información. Para nuestro ejemplo vamos a suponer que la hoja de excel que usted creo se llama MiHoja.Xls y que se encuentra en la raíz del disco C:

Local oExcel, MiArchivoExcel 

MiArchivoExcel = "C:\MiHoja.Xls"
oExcel = CreateObject("Excel.Application")
oExcel.Visible = .T.
oExcel.Workbooks.Open(MiArchivoExcel)

Hasta ahora ya aprendimos varias cosas de importancia antes de entrar en materia para trabajar profundamente con el objeto COM EXCEL a fin de poder crear reportes, gráficos, datos, ejecutar macros, en fin, incorporar a nuestras aplicaciones VFP todo el poder de Microsoft Excel.


Enviar datos desde VFP hacia una hoja de Excel

En esta parte observaremos como enviar o escribir datos desde VFP hacia una hoja de Excel de manera que ya observemos la funcionalidad de lo aprendido anteriormente, para esto debemos conocer la siguiente propiedad:

ObjetoComExcel.Cells(Fila,Columna) 

La propiedad Cells del Objeto COM EXCEL nos permite tener acceso a las celdas de la hoja de Excel y de esta manera poder obtener valores de las celdas de una hoja de excel o poder escribir valores en la misma.

En el siguiente ejemplo1 observaran que se crea una hoja de excel y que se escribe en la celda (A1) un valor, luego se coloca el valor escrito en negrita y luego se le pide a VFP que muestre el valor de esta celda. Para el ejemplo 2 observaremos como crear un reporte sencillo de clientes y vaciar la información en una hoja de excel.

Ejemplo 1:

Local oExcel
oExcel = CreateObject("Excel.Application")
oExcel.Visible = .T.
oExcel.Workbooks.Add

oExcel.Cells(1,1).Value ="Prueba"   && Coloca el Valor Prueba en la Celda A1 de nuestra hoja.
oExcel.Cells(1,1).Font.Bold = .T.   && Coloca en negrita el valor de la celda
oExcel.Workbooks.Close              && Cierra el libro de excel
oExcel.Quit                         && Cierra Microsoft Excel
Release oExcel                      && Libera de la memoria el Objeto COM EXCEL


Ejemplo 2:

Local oExcel, nCelda

Use Clientes In 0 Alias Clientes Shared
Select Clientes
Set Order to CodCli

oExcel = CreateObject("Excel.Application")
oExcel.Visible = .T.
oExcel.Workbooks.Add

nCelda = 1
Scan
 oExcel.Cells(1,nCelda).Value = Clientes.CodCli
 oExcel.Cells(2,nCelda).Value = Clientes.NomCli
 nCelda = nCelda + 1
EndScan

Espero les halla gustado esta documentación y que les saquen el mejor de los provechos.

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox