Posicionar Tabela no Word via Delphi

Delphi

21/06/2011

Pessoal, tenho um arquivo do word gerado pelo Delphi onde substituo algumas strings e gero uma tabela. Mas minha tabela nunca fica na posição correta, no caso após o campo do e-mail. Sempre muda de lugar e corta os textos, o que devo mudar neste código para dar certo.
procedure TFrmOrcamento.GerarOrcamentoTelesegura;var winWord, docs, doc, tabela1: variant;    linha: Integer;   total: real;begin
  total:=0;
  try    WinWord:= CreateOleObject('Word.Application');  except on E: Exception do  begin    E.Message :='Instale o Microsoft Word!';  raise;  end;  end;  WinWord.Visible := true;  Docs := WinWord.Documents;

  if fileExists(ExtractFileDir(Application.ExeName) + '\Documentos\OrcamentoTelesegura2.doc')=true then    deletefile(ExtractFileDir(Application.ExeName)  + '\Documentos\OrcamentoTelesegura2.doc');  CopyFile(Pchar(ExtractFileDir(Application.ExeName)    +'\Documentos\OrcamentoTelesegura.doc'),           Pchar(ExtractFileDir(Application.ExeName) +'\Documentos\OrcamentoTelesegura2.doc'), True);

  Doc := Docs.Open(ExtractFileDir(Application.ExeName) +'\Documentos\OrcamentoTelesegura2.doc');  Doc.Content.Find.Execute(FindText :='%01%', ReplaceWith := DmTabelas.CdsOrcamentoNOME.AsString);  Doc.Content.Find.Execute(FindText :='%02%', ReplaceWith := DmTabelas.CdsOrcamentoENDERECOORCAMENTO.AsString+','+DmTabelas.CdsOrcamentoNUMERO.AsString);  Doc.Content.Find.Execute(FindText :='%03%', ReplaceWith := DmTabelas.CdsOrcamentoBAIRROORCAMENTO.AsString);  Doc.Content.Find.Execute(FindText :='%04%', ReplaceWith := DmTabelas.CdsOrcamentoTELEFONEORCAMENTO.DisplayText);  Doc.Content.Find.Execute(FindText :='%05%', ReplaceWith := DmTabelas.CdsOrcamentoEMAILORCAMENTO.AsString);  Doc.Content.Find.Execute(FindText :='%07%', ReplaceWith := DmTabelas.CdsOrcamentoCONDICOESPGTO.AsString);  Doc.Content.Find.Execute(FindText :='%08%', ReplaceWith := DmTabelas.CdsOrcamentoOBS.AsString);

    //TABELA 1
    Tabela1 := Doc.Tables.Add(Range :=    Doc.Range(Start := 290, End := 290), NumRows := DmTabelas.CdsItensOrcamento.RecordCount + 1, NumColumns := 5);    Linha:=1;    Tabela1.Cell(Row := Linha, Column := 1).Range.InsertAfter('Qtde');    Tabela1.Cell(Row := Linha, Column := 2).Range.InsertAfter('Descrição');    Tabela1.Cell(Row := Linha, Column := 3).Range.InsertAfter('Unidade');    Tabela1.Cell(Row := Linha, Column := 4).Range.InsertAfter('Valor Unitário');    Tabela1.Cell(Row := Linha, Column := 5).Range.InsertAfter('Sub-Total');    Tabela1.AutoFormat(Format := 16, ApplyBorders := False);
    Linha := 2;    DmTabelas.CdsItensOrcamento.First;
    while not DmTabelas.CdsItensOrcamento.Eof do    begin      Tabela1.Cell(Row := Linha, Column := 1).Range.InsertAfter(Text := FormatFloat('###,###,##0.00',DmTabelas.CdsItensOrcamentoQTD.AsFloat));      Tabela1.Cell(Row := Linha, Column := 2).Range.InsertAfter(Text := DmTabelas.CdsItensOrcamentoDESCRICAO.AsString);      Tabela1.Cell(Row := Linha, Column := 3).Range.InsertAfter(Text := DmTabelas.CdsItensOrcamentoUNIDADE.AsString);      Tabela1.Cell(Row := Linha, Column := 4).Range.InsertAfter(Text := FormatFloat('R$ ###,###,##0.00',DmTabelas.CdsItensOrcamentoPRECO.AsFloat));      Tabela1.Cell(Row := Linha, Column := 5).Range.InsertAfter(Text := FormatFloat('R$ ###,###,##0.00',Dmtabelas.CdsItensOrcamentoPRECO.Asfloat*DmTabelas.CdsItensOrcamentoQTD.AsFloat));      Linha := Linha + 1;      DmTabelas.CdsItensOrcamento.Next;      Tabela1.AutoFormat(Format := 16, ApplyBorders := False);      total:=total+(Dmtabelas.CdsItensOrcamentoPRECO.Asfloat * DmTabelas.CdsItensOrcamentoQTD.AsFloat);    end;
    Doc.Content.Find.Execute(FindText :='%06%', ReplaceWith := FormatFloat('R$ ###,###,##0.00',DmTabelas.CdsorcamentoTOTAL.AsFloat));end;
Claudio Junior

Claudio Junior

Curtidas 0

Respostas

Anderson Nunes

Anderson Nunes

21/06/2011

Olha, uma vez eu tive que trabalhar com arquivos word no delphi, então tive a ideia de renomear um arquivo gerado pelo word como xml e abrir no dreamweaver, fui alterando meus parametros no delphi de acordo com as modificações e fazia no word e observações que fazia depois no documento. Eu fiz tudo na mão, sem a necesside de usar o word para criar o documento, um arquivo de texto parseado formando o corpo do documento, claro, da um trabalhão mas me permitu fazer tudo o que precisei..
GOSTEI 0
José

José

21/06/2011

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0
Claudio Junior

Claudio Junior

21/06/2011

Consegui fazer, depois coloco o código pois está em outro computador....
GOSTEI 0
POSTAR