Ver Mensaje Individual
  #1  
Antiguo 07-01-2014
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Reputación: 22
fjcg02 Va camino a la fama
Volcar url de Delphi a Excel

Hola a todos,
estoy volcando datos de delphi a Excel.

Para ello, en un programa delphi, tengo un boton que llama a una función que hace todo perfectamente menos... una formula que crea un hipervinculo.

Tengo un campo que me monta a la perfección la llamada

=HIPERVINCULO("http://servidor.dominio.es:80/CAisd/web.exe?OP=SEARCH+FACTORY=cr+SKIPLIST=1+QBE.EQ.id=7752545";"984368")

Cuando este campo lo paso a excel, me da un error de conexión.

El problema está en el igual. Si este valor lo copio y lo pego a mano, excel hace algo con él, y me funciona correctamente.

la llamada a excel es así:

Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
var
  excel,WrkB :OleVariant; Salida: string;
begin
  try
    excel:= ComObj.CreateOleObject('Excel.Application');
  except
    ShowMessage('Excel no se pudo iniciar.');
    exit;
  end;
  excel.Visible:=true;

  WrkB := Excel.Workbooks.Add ;

  EjecutarConsulta;
  Salida:= AExcel( 1,1,1,excel,WrkB, ADOQuery1);

function TForm1.AExcel( Hoja,Fila,Columna: Integer; excel,WrkB :OleVariant; Data:TADOQuery): string;
var
  WrkS :OleVariant;
  Campo:Integer;
  Salida: string;
begin
  Data:=ADOQuery1;
  if not Data.Active then
  begin
    messageDlg('La consulta debe ejecutarse previamente',
              mtConfirmation, [mbOK],0);
    Exit;
  end;
  WrkS := WrkB.Worksheets.Item[Hoja];

  Data.First;
  Salida:= FormatDateTime('[hh:mm:ss]',now)+ ' Comienzo Proceso... ';

    for Campo := 0 to Data.FieldCount-1 do
    begin
      WrkS.Cells[fila,Campo+Columna].Value:=Data.fields[Campo].FieldName;
    end;

  try
    while not(Data.eof) do
    begin
      for Campo := 0 to Data.FieldCount-1 do
      begin
        if not Data.Fields[Campo].IsNull then
          WrkS.Cells[fila,Campo+Columna].Value:=trim(Data.Fields[Campo].AsString);
      end;
      Data.Next;
      fila:= fila + 1;
    end;
  Except
     ShowMessage('Atención, se produjo un error en la transmisión.');
  end;

end;
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita