Conexión entre Ruby y una instancia en ejecución de Excel

Iniciado por Alejandro_99, Agosto 02, 2013, 02:15:41 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Agosto 02, 2013, 02:15:41 PM Ultima modificación: Agosto 04, 2013, 11:32:51 PM por Alejandro9999
Anteriormente había mencionado como crear una instancia de Excel desde Ruby, añadir un libro y escribir algo de texto en las celdas de la hoja activa. En esta ocasión voy a hablar de cómo conectarse desde Ruby a una instancia de Excel en ejecución.


Veamos algo de código...

Código: ruby
require 'win32ole'
excel = WIN32OLE.new('Excel.Application')
excel.visible = true
workbook = excel.Workbooks.Add();
worksheet = workbook.Worksheets(1);
worksheet.Range("A1:D1").value = ["North","South","East","West"];
worksheet.Range("A2:B2").value = [5.2, 10];
worksheet.Range("C2").value = 8;
worksheet.Range("D2").value = 20;
range = worksheet.Range("A1:D2");
range.select
chart = workbook.Charts.Add;
workbook.saved = true;
excel.ActiveWorkbook.Close(0);
excel.Quit();


El código anterior crea una nueva instancia de Excel, la hace visible, agrega un libro, agrega unos datos a la hoja 1 y a partir de ellos crea grafico para luego cerrar el libro sin necesidad de guardarlo y cierra la instancia previamente creada. Este código si lo guardan como un script de Ruby, con la extensión ".rb" y lo ejecutan, será tan rápido que si parpadean no verán nada.

Pero habrá casos en los que haya que trabajar o procesar datos de un libro que ya se encuentra abierto y como hacer eso, bueno solo habría que cambiar una línea del código anterior, en donde se crea la instancia de Excel:

Código: ruby
excel = WIN32OLE.new('Excel.Application')


la cual quedaría asi:


Código: ruby
excel = WIN32OLE.connect('Excel.Application')


Con este cambio, Ruby no crea una instancia, sino que se conecta a la instancia de Excel en ejecución.

Aqui tienen un video para mas detalle al respecto:No tienes permitido ver los links. Registrarse o Entrar a mi cuenta