![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Desconozco si es posible hacer esto utilizando ADO. A fin de cuentas un libro de Excel no es propiamente una base de datos cuyas tablas sean las hojas.
Prueba a ver si te sirve esto: Código:
uses
ComObj;
...
procedure HojasExcel(Archivo: String; Lista: TStrings);
var
Excel: OleVariant;
Libro: OleVariant;
I: Integer;
begin
Excel := CreateOleObject('Excel.Application');
Libro := Excel.WorkBooks.Open(Archivo);
try
Lista.Clear;
for I := 1 to Libro.Worksheets.Count do
Lista.Add(Libro.Worksheets.Item[i].Name);
finally
Libro.Close;
end;
end;
Código:
HojasExcel('archivo.xls', ListBox.Items);
// Saludos |
|
#2
|
||||
|
||||
|
Una observación:
En lugar de crear una instancia de Excel con CreateOleObject podrías utilizar una componente TExcelApplication de la paleta Servers. Así lo probé inicialmente y funciona. El incoveniente es que entonces debes llenar todos los parámetros del método Open que son muchísimos e irrelevantes para lo que se busca. // Saludos |
|
#3
|
|||
|
|||
|
Muchas gracias, Román! Lo intentaré de inmediato y te dejo saber si me funcionó o no
Saludos desde México Alejandro |
|
#4
|
|||
|
|||
|
Hola de nuevo, Román!
Pues no, no funcionó, fíjate. Lo intenté con ADO y con un TExcelApplication y nada. Ni siquiera me acepta la propiedad Names, pues me dice que no existe, y eso lo hice cuando ya tenía el TExcelApplication, por lo que no se a qué se debe. Mi código de todo el Unit quedó de la siguiente manera: Código:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleServer, Excel2000, DB;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
Excel: TExcelApplication;
cbxHojas: TComboBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Libro: _WORKBOOK;
Hoja: _WORKSHEET;
I : Integer;
begin
Libro := Excel.Workbooks.Open('D:\Mis Documentos\atirado\Excel\nomina.xls',
false,false,
null,'',null,true,null,'',
true,null,null,false,0);
For I:= 1 to Libro.Worksheets.Count do
cbxHojas.items.add(Libro.Worksheets.Item[i].Name);
Hoja := Libro.Sheets[1] as _WORKSHEET;
Excel.Visible[0] := true;
end;
end.
Salu2 desde MX Alejandro |
|
#5
|
||||
|
||||
|
Cita:
Es posible que dependiendo de la versión de Excel, el nombre de algunas propiedades sea distinto y habrá que ajustarse a ello estudiando la ayuda de VB que incluye Office o bien consultando el SDK de Windows. De cualquier manera, como no dices si probaste el procedimiento que te pasé ni en su caso, que errores te marcó, así como tampoco indicas la versión de Excel que usas, ni la versión de Delphi ni la versión de las componentes Office, es imposible en estos momentos tratar de dilucidar lo que pasa. // Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|