Ver Mensaje Individual
  #3  
Antiguo 11-08-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Reputación: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Amigo me tome la libertad de hacer algunos cambios a tu codigo, yo personalmente prefiero trabajar con las coordenadas de las hojas...

Es decir hago referencia a Filas y columnas de una hoja excel y utilizo una funcion para transformar los numeros de filas y columnas a formato letranumero.

Ejemplo : Fila=1, Columna=1 hace referencia A1.

Bueno aqui esta el codigo te agrege dos funciones...

Código Delphi [-]
  {Combierte el indice de la columna a su respectiva letra de columna
  Index=1-> A,  Index=6->F, Index=27->AA}
  Function ExcelColToChar(Index : Integer) : String;
  Begin
       If Index < 1 then
          Result:='A'
       Else
       Begin
            If Index > 702 Then
               Result:='ZZ'
            Else
            Begin
                 If Index > 26 Then
                 Begin
                      If (Index Mod 26)=0 Then
                         Result:=Chr(64 + (Index Div 26)-1)
                      Else
                         Result:=Chr(64 + (Index Div 26));

                      If (Index Mod 26)=0 Then
                         Result:=Result+Chr(64+26)
                      Else
                          Result:=Result+Chr(64 + (Index Mod 26));
                 End
                 Else
                     Result:=Chr(64 + Index);
            End;
       End;
  End;

  {Convierte Filas y columnas a formato Excel
  Ejm:
     Row1=1, Col1=1, Row2=1, Col2=1 -> A1:A1

     A(1)    B(2)    C(3)   ExcelSetRange(Row1, Col1, Row2, Col2)
   1  1,1   1,2      1,3    ExelSetRange(1,1,1,1) ->A1:A1
   2  2,1   2,2      2,3    ExelSetRange(1,2,3,2) ->B1:B3
   3  3,1   3,2      3,3    ExelSetRange(3,3,3,3) ->C3:C3
  }

  Function ExcelSetRange(Row1, Col1, Row2, Col2:Integer):String;
  Begin
       Result:=Format('%s%d:%s%d',[ExcelColToChar(Col1),Row1,ExcelColToChar(Col2),Row2 ]);
  End;


...
Var
    Value:Variant;
begin
     c:=X+fila;

          A:=ExcelSetRange(C,1,C,1);
          B:=ExcelSetRange(C,2,C,2);

          strFormula:=Format('=ISTEXT(%s)',[ExcelSetRange(c,1,c,1)]) ;

          {ExcelSetRange(1,6,1,6)->F1}
          F1:=ExcelSetRange(1,6,1,6);

          oXLS.Range[F1].Select;
          oXLS.Selection.ClearContents;
          oXLS.Range[F1].Formula:=strFormula;

          Value:=oXLS.Range[F1].select;
          {Pregunta por el tipo del Value que como es de tipo Variant}
          if ((VarType(Value)=varBoolean) And (Value))Then
             oXLS.Range[b].Value:='0';

          Showmessage(ToString(oXLS.Range[b]));
          ListaInserta.Items.Add(ToString(oXLS.Range[b]));
          oXLS.Range[A].copy;
          NombrePieza.Items.Add(ToString(oXLS.Range[A]));

En negrita los cambios que me tome la libertad de modificar...

Nota: Eso de urgente en los titulos de los post, aqui no corre lee la guia de estilo...

Saludos cordiales

Última edición por cloayza fecha: 11-08-2010 a las 16:27:04.
Responder Con Cita