En este caso no me sirve lo de la plantilla, ya que la hoja es bastante compleja (una demostración de los calculos de un programa complejo según exigencias de la Ley) por eso estoy obligado a incluir las funciones de Excel, Ya logré usar fórmulas simples y la función SUMA que se usa por ej.
'=SUM(A1:A15)'
ó
'=RAND()' ----> Aleatorio
Noten que es SUM y no SUMA ahora si trato de usar la funcion =SI()
'=IF(B5-B6<0;B5-B6;0)'
Me da un "Ole error 800A03EC" y lo mismo me pasa con la funcion ROUND (Redondear).
He usado este código para hacer pruebas de sintaxis (en edit1.text) y no he podido encontrar el problema.
Código:
Function LaFormula(f:String):String;
Var
p : Integer;
Begin
While(pos('##',f) <> 0) do
Begin
p := pos('##',f);
Delete(f,p,2);
Insert(IntToStr(Row),f,p);
End;
Result := f;
End;
procedure TForm1.Button1Click(Sender: TObject);
Var
RangeE:Range;
i,Row: Integer;
Begin
For i := 0 to Query1.FieldCount-1 do
begin
RangeE.Value := Query1.Fields[i].DisplayLabel;
RangeE := RangeE.Next;
End;
Row := 2;
While not(Query1.Eof) do
Begin
RangeE := ExcelApplication1.Range['A'+IntToStr(Row),'A'+IntToStr(Row)];
For i := 0 to Query1.FieldCount-1 do
begin
RangeE.Value := Query1.Fields[i].AsString;
RangeE := RangeE.Next;
End;
RangeE.Value := LaFormula('=SUM(C##:E##)');
RangeE := RangeE.Next;
RangeE.Value := LaFormula(Edit1.Text);
Query1.Next;
Inc(Row);
End;
end;