erro excel

Delphi

16/11/2011

Caros senhores boa tarde.
Possuo uma rotina em um sistema que exporta dados de uma grid para uma planilha já existente. O mesma funcionava perfeitamente. Precisei do mesmo processo em um outro sistema. Copiei a rotina e passou a me reportar um erro.
Fui ao projeto anterior e o erro tb ocorre nele, ou seja, não funciona mais, me apresentando o seguinte erro:
[Error] Uselplanilhaesc.pas(194): Not enough actual parameters
[Error] Uselplanilhaesc.pas(222): [ expected but := found
[Error] Uselplanilhaesc.pas(223): [ expected but := found
[Error] Uselplanilhaesc.pas(224): [ expected but := found
[Error] Uselplanilhaesc.pas(225): [ expected but := found
[Error] Uselplanilhaesc.pas(226): [ expected but := found
[Error] Uselplanilhaesc.pas(227): [ expected but := found
[Error] Uselplanilhaesc.pas(228): [ expected but := found
[Error] Uselplanilhaesc.pas(229): [ expected but := found
[Error] Uselplanilhaesc.pas(230): [ expected but := found
[Error] Uselplanilhaesc.pas(231): [ expected but := found
[Error] Uselplanilhaesc.pas(232): [ expected but := found
[Error] Uselplanilhaesc.pas(235): [ expected but := found
[Error] Uselplanilhaesc.pas(236): [ expected but := found
[Error] Uselplanilhaesc.pas(237): [ expected but := found
[Error] Uselplanilhaesc.pas(249): Undeclared identifier: TerminateProcesso
[Fatal Error] Frota.dpr(172): Could not compile used unit Uselplanilhaesc.pas

sendo a rotina a seguinte :

procedure Tfrmselplanilhaesc.BitBtn2Click(Sender: TObject);
var xcfop : string;
begin
nomearquivo := s:\planilhas\modelos\modelo escoamento.xls;
novoarq := s:\planilhas\TPS escoamento +
copy(maskedit3.Text,1,2)+copy(maskedit3.Text,4,3)+
copy(maskedit3.Text,8,3)+copy(maskedit3.Text,12,4)+
copy(maskedit3.Text,17,2)+ +
copy(maskedit1.Text,1,2)+copy(maskedit1.Text,4,2)+copy(maskedit1.Text,7,4)+a+
copy(maskedit2.Text,1,2)+copy(maskedit2.Text,4,2)+copy(maskedit2.Text,7,4);

gauge2.Progress := 0;
gauge2.MaxValue := cdsplanilha.RecordCount;;
lcid := GetUserDefaultLCID;

ExcelApplication1.DisplayAlerts[lcid] := false;

WkBk := ExcelApplication1.Workbooks.Open(nomearquivo,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,lcid); // o erro ocorre aqui

ExcelWorksheet1.ConnectTo(WkBk.Worksheets[1] as _Worksheet);
ExcelWorksheet1.Activate(LCID);
ExcelApplication1.ScreenUpdating[lcid] := true;

cdsplanilha.First;
linha := 3;
While not cdsplanilha.Eof do
begin
if dbgrid1.SelectedRows.CurrentRowSelected then
begin
xcfop := copy(cdsplanilha.FieldByName(cfop).AsString,1,1)+copy(cdsplanilha.FieldByName(cfop).AsString,3,3);
if (cdsplanilha.FieldByName(aliquota).AsFloat = 18) or
((cdsplanilha.FieldByName(aliquota).AsFloat = 0) and (cdsplanilha.FieldByName(tipo).AsString = 1) and
(cdsplanilha.FieldByName(ufreme).AsString = cdsplanilha.FieldByName(ufdest).AsString) and
(cdsplanilha.FieldByName(ufreme).AsString = MG)) then
xcfop := 1352
else
if cdsplanilha.FieldByName(aliquota).AsFloat = 12 then
xcfop := 2352
else
if cdsplanilha.FieldByName(aliquota).AsFloat = 7 then
xcfop := 2352
else
if cdsplanilha.FieldByName(aliquota).AsFloat = 0 then
xcfop := 3352;

ExcelWorksheet1.Range[A+ inttostr(linha),A+inttostr(linha)].Value := 000+cdsplanilha.FieldByName(numeronf1).AsString;
ExcelWorksheet1.Range[B+ inttostr(linha),B+inttostr(linha)].Value := BMJF;
ExcelWorksheet1.Range[C+ inttostr(linha),C+inttostr(linha)].Value := 4000;
ExcelWorksheet1.Range[D+ inttostr(linha),D+inttostr(linha)].Value := 1000855;
ExcelWorksheet1.Range[E+ inttostr(linha),E+inttostr(linha)].Value := cdsplanilha.FieldByName(numconhece).AsString;
ExcelWorksheet1.Range[F+ inttostr(linha),F+inttostr(linha)].Value := copy(cdsplanilha.FieldByName(serie).AsString,1,1);
ExcelWorksheet1.Range[G+ inttostr(linha),G+inttostr(linha)].Value := copy(cdsplanilha.FieldByName(serie).AsString,2,1);
ExcelWorksheet1.Range[H+ inttostr(linha),H+inttostr(linha)].Value := cdsplanilha.FieldByName(totalprest).AsFloat;
ExcelWorksheet1.Range[I+ inttostr(linha),I+inttostr(linha)].Value := cdsplanilha.FieldByName(fretepeso).AsFloat;
ExcelWorksheet1.Range[J+ inttostr(linha),J+inttostr(linha)].Value := cdsplanilha.FieldByName(aliquota).AsFloat;
ExcelWorksheet1.Range[K+ inttostr(linha),K+inttostr(linha)].Value := formatdatetime(dd,cdsplanilha.FieldByName(datacon).AsDateTime)+.+
formatdatetime(mm,cdsplanilha.FieldByName(datacon).AsDateTime)+.+
formatdatetime(yyyy,cdsplanilha.FieldByName(datacon).AsDateTime);
ExcelWorksheet1.Range[L+ inttostr(linha),L+inttostr(linha)].Value := xcfop;
ExcelWorksheet1.Range[M+ inttostr(linha),M+inttostr(linha)].Value := cdsplanilha.FieldByName(ufdest).AsString;
ExcelWorksheet1.Range[N+ inttostr(linha),N+inttostr(linha)].Value := cdsplanilha.FieldByName(ufreme).AsString;
// if cdsplanilha.FieldByName(aliqiss).AsFloat <> 0 then
// ExcelWorksheet1.Range[O+ inttostr(linha),O+inttostr(linha)].Value := cdsplanilha.FieldByName(aliqiss).AsFloat;

inc(linha);
end;
cdsplanilha.Next;
gauge2.Progress := gauge2.Progress + 1;
end;

ExcelWorksheet1.SaveAs(novoarq);
ExcelApplication1.Free;
TerminateProcesso(EXCEL.EXE);

showmessage(Planilha criada com sucesso.);

end;

desde já agradeço a atenção

abraços
Josemar Tavares

Josemar Tavares

Curtidas 0

Respostas

Wesley Yamazack

Wesley Yamazack

16/11/2011

Olá Josemar,

Diz uma coisa a função TerminateProcesso, esta em que unit?
Na unit do form frmselplanilhaesc, você deu uses nesta unit onde tem a função TerminateProcesso? Caso contrário faça isso e veja se irá resolver, blz ?

Um abraço.
GOSTEI 0
POSTAR