Integração Delphi Word
Pessoal eu esou tenho um problema com a emissão dos documentos. acontece que eu gostaria de deixar o usuario livre para confeccionar o documento e para isso adicionei o seguinte codigo ao botao de chamada do documento do word:
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!
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
Curtidas 0
Melhor post
Wesley Yamazack
06/07/2017
Opa Janiltojack, blz?
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
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
GOSTEI 2
Mais Respostas
Emerson Nascimento
05/07/2017
e se tentar algo como:
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.
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
Janilto Oliveira
05/07/2017
Opa Janiltojack, blz?
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
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
Janilto Oliveira
05/07/2017
Boa tarde, Wesley Yamazack
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
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