Fórum Integração Delphi Word #583336
05/07/2017
0
var WordApp: variant; { variável do Word }
Document: variant; { documento do Word }
path: string;
begin
{ inicia o Word, caso já não esteja rodando }
if VarIsEmpty(WordApp)
then WordApp := CreateOleObject('Word.Application');
path := ExtractFilePath(Application.ExeName);
Document := WordApp.Documents.Open(path + 'Cartas\\CARTA_ANIVERSÁRIO.doc');
WordApp.Visible := True;
{ Move os dados da tabela para o documento do word. }
Document.FormFields.Item('Nome').Result :=
ADOTbCartas.FieldbyName('Nome').AsString;
Document.FormFields.Item('CPF').Result :=
ADOTbCartas.FieldbyName('CPF').AsString;
// Document.FormFields.Item('RG').Result :=
// ADOTbCartas.FieldbyName('RG').AsString;
// Document.FormFields.Item('Email').Result :=
// ADOTbCartas.FieldbyName('Email').AsString;
end;
O problema é que se esse campo referente ao CPF por exemplo nao estiver presente no documento da uma mensagem de erro na emissão do documento:
>>>> Omembro solicitado da coleção nao existe. <<<<
CLIQUE AQUI E VEJA A IMAGEM DO ERRO mesmo emite o documento . Eu gostaria de deixar os campos a serem inseridos no documento a gosto do cliente ( usuario do programa ) sem que essa mensagem seja vista pelo usuario.
Agradeço a contribuição de todos!
Janilto Oliveira
Curtir tópico
+ 0Post mais votado
06/07/2017
Então, eu faço um pouco diferente de você, inclusive há um tempo eu fiz um artigo aqui para a DevMedia mesmo. Q tal?
www.devmedia.com.br/passar-parametros-para-word-a-partir-do-delphi-dica/15723
Desta forma não temos esse problema que você mencionou, q tal dar uma olhada?
Grande abraço
Wesley Yamazack
Gostei + 2
Mais Posts
06/07/2017
Emerson Nascimento
if Document.FormFields.Item(''Nome'') <> nil then
Document.FormFields.Item(''Nome'').Result :=
ADOTbCartas.FieldbyName(''Nome'').AsString;Document.FormFields.Item(''Nome'').Result := ADOTbCartas.FieldbyName(''Nome'').AsString;
if Document.FormFields.Item(''CPF'') <> nil
Document.FormFields.Item(''CPF'').Result :=
ADOTbCartas.FieldbyName(''CPF'').AsString;Document.FormFields.Item(''CPF'').Result := ADOTbCartas.FieldbyName(''CPF'').AsString;
não sei a comparação correta seria com nil. não tenho o Delphi agora para efetuar testes.
Gostei + 0
06/07/2017
Janilto Oliveira
Então, eu faço um pouco diferente de você, inclusive há um tempo eu fiz um artigo aqui para a DevMedia mesmo. Q tal?
www.devmedia.com.br/passar-parametros-para-word-a-partir-do-delphi-dica/15723
Desta forma não temos esse problema que você mencionou, q tal dar uma olhada?
Grande abraço
Estive olhando este artigo e gostei dele so nao tenti implementar ainda mas vou fazer uma tentativa com ele, nao tenho muto conhecimento em programação ainda mas to indo caminhando sem parar kkkk. Obrigado por se interessar em ajudar. Farei um teste !
Gostei + 0
25/08/2017
Janilto Oliveira
Voce consegue postar pra mim um projeto exemplo somente dessa parte de cartas pode ser com apena um campo de tabela por exemplo um documento do word e a form completa ( unit) com substituição apenas de nome . Mas preciso saber como gerar esses dados para a substituição por exemplo a origem dos dados e como envia-los pro documento. Tenho visto que algums campos no Word sao do tipo ex: @NOME outros #NOME ou wNOME e eu sou inciante bem newbie mesmo ainda nao entendi como fazer devido a minha inesperiencia mesmo kkkk . Obrigado
Pessoal eu citei o nome do Wesley Yamazack mas vou ser grato a todos que me ajudarem com a duvida e ajuda
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)