Olá galera, nesta Quick Tips, irei mostrar como enviar como parâmetro um texto para o Word com mais de 200 caracteres, uma dica muito útil que foi montada com a ajuda do amigo Jorge Roberto Trento. Encontramos um problema onde os parâmetros que contém mais de 200 caracteres não são aceitos, porém com esta rotina podem ser passados quantos caracteres for preciso, um exemplo de onde usar isso é na montagem de contratos dinâmicos.

Veja o código abaixo

Dar uses em ComObj;


procedure TFrmPrincipal.Button1Click(Sender: TObject);
var
  MSWord: OleVariant;
begin
  if not OpenDialog1.Execute then
    Exit;
  MSWord := CreateOleObject('Word.Application');
  { Será aberto seu documento com o parametro a ser substituido }
  MSWord.Application.Documents.Open(OpenDialog1.FileName);
  // Deixo o word visivel
  MSWord.Visible := true;
  // Limpo os parametros de busca do word
  MSWord.Application.Selection.Find.ClearFormatting;
  { Adiciono no find o parametro que quero buscar dentro do word,
    e abaixo esta selecionado as condições }
  MSWord.Application.Selection.Find.Text := '@parametro1';
  MSWord.Application.Selection.Find.Replacement.Text := '';
  MSWord.Application.Selection.Find.Forward := true;
  MSWord.Application.Selection.Find.Format := False;
  MSWord.Application.Selection.Find.MatchCase := False;
  MSWord.Application.Selection.Find.MatchWholeWord := False;
  MSWord.Application.Selection.Find.MatchWildcards := False;
  MSWord.Application.Selection.Find.MatchSoundsLike := False;
  MSWord.Application.Selection.Find.MatchAllWordForms := False;
  // Executo o pesquisa, o parametro se estiver no texto vai ficar selecionado
  MSWord.Application.Selection.Find.Execute;
  //Formatar o parametro mudado:
  MSWord.Application.Selection.Font.Name := '';
  MSWord.Application.Selection.Font.Size := 14;
  MSWord.Application.Selection.Font.Bold := False;
  MSWord.Application.Selection.Font.Color := wdColorRed;

  if MSWord.Application.Selection.Find.Found then { verifica se achou }
    // Substituo o parametro selecionado pelo texto que esta eu quero
    MSWord.Application.Selection.TypeText(Memo1.Lines.Text);
  end;
end.

Fico por aqui ate à próxima Quick Tips.

Um abraço

Wesley Y