Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Leer el hyperlik de una celda en un archivo de excel (https://www.clubdelphi.com/foros/showthread.php?t=67867)

jazmin 11-05-2010 15:50:07

Leer el hyperlik de una celda en un archivo de excel
 
hola muchachos :p les tengo una muy buena pregunta.

necesito obtener el adress de un hyperlink de una celda en un archivo de excel.

Para darme mejor a entender imaginense una archivo de excel cualquiera con la celda 'B2' donde tengo un texto que dice HOLA pero su adrees apunta a una pagina de internet 'www.clubdelphi.com'

necesito el codigo para realizar consultar el adrees de todas las celdas de un documento.
creo ir por buen camino pero no logro sacar el dato
este es el codigo que estoy usando please ayudenme no he podido avanzar :(en esto me ayudan ...;).

Código:


var
Libro : _WORKBOOK;
Hoja : _WORKSHEET;
direccion:string;
begin
Libro := ExcelApplication1.Workbooks.Add('c:\ejemplo.xls', 0);
Hoja := Libro.Sheets[1] as _WORKSHEET;
 
 
direccion:=Hoja.Cells.Hyperlinks['B2'].Address;
 
end;


roman 11-05-2010 17:03:28

A ver si así:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
    Excel: OleVariant;
    Libro: OleVariant;
    Hoja: OleVariant;

begin
    Excel := ComObj.CreateOleObject('Excel.Application');

    Libro := Excel.Workbooks.Open('C:\ruta\al\archivo.xls');
    Hoja := Libro.ActiveSheet;
    Excel.Visible := true;

    ShowMessage(Hoja.Cells[2, 'B'].Hyperlinks[1].Address);
end;

// Saludos

jazmin 11-05-2010 19:02:20

no funciono roman
Primero puse tu codigo natural como me lo indicaste pero me carca un error
con el "ComObj"

Código:

    Excel := ComObj.CreateOleObject('Excel.Application');
Asi que modifique el codigo y inserte la ultima linea esta
en el mismo codigo que utilice y sigue sin funcionar

Código:

ShowMessage(Hoja.Cells.Item[2,'B'].Hyperlinks[1].Address);
Lo modifique asi y tampoco me dice "invalid index"
alguna otra idea o como arreglamos esta para que sirva

roman 11-05-2010 19:04:20

Cita:

Empezado por abdul (Mensaje 363601)
alguna otra idea o como arreglamos esta para que sirva

Con mi código, añade ComObj al uses de la unidad.

// Saludos

olbeup 11-05-2010 20:27:52

En la parte de arriba donde están los Uses, incluye también el (ComObj)
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Excel, Libro, Hoja: OleVariant;
begin
  Excel := CreateOleObject('Excel.Application');

  Libro := Excel.WorkBooks.Open('C:\ruta\al\archivo.xls');

  Hoja := Libro.ActiveSheet;

  Excel.Visible := False;

  ShowMessage(Hoja.Cells[2, 'B'].Hyperlinks[1].Address);
end;

jazmin 11-05-2010 20:47:47

ya funciono pero hay un inconvenente
 
me manda un error cuando apunto a una celda que no tiene un hyperlink

y tego una duda yo se que ya funciono pero me quedo inquieta porque no se
porque tenemos que poner 1 como index en el codigo del hyperlink

Código:


Hyperlinks[1].Address


como le puedo hacer para saber si tiene un hyperlink antes de pedir su adress
yo supongo que es algo muy parecido como cuando apuntamos a un parent en un tree view pero no encuentro esa funcion que me indique si tiene o no un hyperlink

como le puedo hacer?;)


hay muchas gracias por la ayuda la agradesco muchismo me ayuda y enselan mucho

roman 11-05-2010 21:11:02

Una celda es un caso particular de un rango (un rango es un conjunto de celdas) y en un rango puede haber varios enlaces (en distintas celdas).

Suponiendo que tienes enlaces en B2 y C2, entonces puedes obtenerlos así:

Código Delphi [-]
ShowMessage(Hoja.Range['B2:C2'].Hyperlinks[1].Address);
ShowMessage(Hoja.Range['B2:C2'].Hyperlinks[2].Address);

Puedes saber cuántos enlaces hay en un rango con

Código Delphi [-]
Hoja.Range['B2:C2'].Hyperlinks.Count

Así que, para saber si una celda tiene o no un enlace, puedes hacer:

Código Delphi [-]
if Hoja.Cells[2, 'B'].Hyperlinks.Count > 0 then

Por lo dicho antes, dado que una celda es una rango de una sóla celda, también puedes referirte a ella con

Código Delphi [-]
Hoja.Range['B2:B2']

o bien

Código Delphi [-]
Hoja.Range['B2']

// Saludos

jazmin 11-05-2010 22:11:05

muchas muchas gracias
 
Con eso creo yo que es mas que suficiente ahora si voy avanzar en mi programa


son muy muy amables

espero aprender mucho de ustedes y de ti roman para dentro de mucho pero ser como tu de lista jejeje

:p


La franja horaria es GMT +2. Ahora son las 00:03:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi