marcioe Posted January 30, 2019 Report Share Posted January 30, 2019 Olá amigos, Estou usando a seguinte Rotina, que peguei aqui mesmo no Forum, funciona bem, mas porem no Cabecalho e Rodapé não aceita fazer o oWord:Replace("@Nome_Imobiliaria", Nome_Imobiliaria ) Por Exemplo. FUNCTION GERA_CONTRATO_FORMATO_WORD( v_Numero_contrato ) local oWord oWord := TWord():New() oWord:OpenDoc( (CurDrive() +":\"+ CurDir() + '\RELS\'+'Contrato.DOC') ) PT_DRV_EXP := DRIVE_TR+"\"+CURDIR()+"\CONTRATOS" IF !lIsDir( (PT_DRV_EXP) ) If MsgYesNo("A Pasta "+PT_DRV_EXP +" Não Existe !" + chr(13) +; " " + chr(13) +; " Deseja Criá-la ",SISTEMA) lMkDir( (PT_DRV_EXP) ) MsgAlert("A Pasta "+PT_DRV_EXP +" Foi Criada !" ,SISTEMA) ELSE MsgStop( "Sem que a Pasta Seja Criada o Sistema Nao Pode Continuar ! ",SISTEMA) RETURN .F. ENDIF ENDIF *---------------------------------------------------------------------------- * Locadores *---------------------------------------------------------------------------- oWord:Replace("@Nome_locador", Nome_locador ) oWord:Replace("@Nacionalidade_Locador", Nacionalidade_Locador ) oWord:Replace("@Tipo_Inscricao_Locador", Tipo_Inscricao_Locador ) oWord:Replace("@Cpf_Cnpj_Locador", Cpf_Cnpj_Locador ) oWord:Replace("@Tipo_Inscricao_rg_Locador", Tipo_Inscricao_rg_Locador ) oWord:Replace("@Rg_Inscricao_Estadual_Locador", Rg_Inscricao_Estadual_Locador ) oWord:Replace("@Orgao_Emissor_Rg_Locador", Orgao_Emissor_Rg_Locador ) oWord:Replace("@Endereco_Locador", Endereco_Locador ) oWord:Replace("@Complemento_Endereco_Locador", Complemento_Endereco_Locador ) oWord:Replace("@Numero_Endereco_Locador", Numero_Endereco_Locador ) oWord:Replace("@Nome_Bairro_Locador", Nome_Bairro_Locador ) oWord:Replace("@Cep_Locador", Cep_Locador ) oWord:Replace("@Cidade_Locador", Cidade_Locador ) oWord:Replace("@Estado_Locador", Estado_Locador ) oWord:Replace("@Profissao_Locador", Profissao_Locador ) oWord:Replace("@Estado_Civil_Locador", Estado_Civil_Locador ) oWord:Replace("@Representante_Locador", Representante_Locador ) oWord:Replace("@Locadores_Extras", Locadores_Extras ) *---------------------------------------------------------------------------- * Locatarios *---------------------------------------------------------------------------- oWord:Replace("@Nome_locatario",Nome_locatario ) oWord:Replace("@Nacionalidade_Locatario",Nacionalidade_Locatario ) oWord:Replace("@Tipo_Inscricao_Locatario",Tipo_Inscricao_Locatario ) oWord:Replace("@Cpf_Cnpj_Locatario",Cpf_Cnpj_Locatario ) oWord:Replace("@Tipo_Inscricao_rg_Locatario", Tipo_Inscricao_rg_Locatario ) oWord:Replace("@Rg_Inscricao_Estadual_Locatario",Rg_Inscricao_Estadual_Locatario ) oWord:Replace("@Orgao_Emissor_Rg_Locatario",Orgao_Emissor_Rg_Locatario ) oWord:Replace("@Endereco_Locatario",Endereco_Locatario ) oWord:Replace("@Numero_Endereco_Locatario",Numero_Endereco_Locatario ) oWord:Replace("@Complemento_Endereco_Locatario",Complemento_Endereco_Locatario ) oWord:Replace("@Nome_Bairro_Locatario",Nome_Bairro_Locatario ) oWord:Replace("@Cep_Locatario",Cep_Locatario ) oWord:Replace("@Cidade_Locatario",Cidade_Locatario ) oWord:Replace("@Estado_Locatario",Estado_Locatario ) oWord:Replace("@Profissao_Locatario",Profissao_Locatario ) oWord:Replace("@Estado_Civil_Locatario",Estado_Civil_Locatario ) oWord:Replace("@Representante_Locatario",Representante_Locatario ) oWord:Replace("@Locatarios_Extras",Locatarios_Extras ) oWord:Replace("@Assinatura_Extra_Locatario",Assinatura_Extra_Locatario ) *---------------------------------------------------------------------------- * Dados do Fiador *---------------------------------------------------------------------------- oWord:Replace("@Assina_Fiadores", Assina_Fiadores ) oWord:Replace("@Primeiro_Fiador",Primeiro_Fiador ) oWord:Replace("@Segundo_Fiador",Segundo_Fiador ) *---------------------------------------------------------------------------- * Dados da Imobiliaria *---------------------------------------------------------------------------- oWord:Replace("@Nome_Imobiliaria", Nome_Imobiliaria ) oWord:Replace("@Endereco_Imobiliaria", Endereco_Imobiliaria ) oWord:Replace("@Numero_Endereco_Imobiliaria", Numero_Endereco_Imobiliaria ) oWord:Replace("@Bairro_imobiliaria", Bairro_imobiliaria ) oWord:Replace("@Cep_Imobiliaria", Cep_Imobiliaria ) oWord:Replace("@Cidade_Imobiliaria", Cidade_Imobiliaria ) oWord:Replace("@Estado_Imobiliaria", Estado_Imobiliaria ) oWord:Replace("@Telefone_Imobiliaria", Telefone_Imobiliaria ) oWord:Replace("@Cpf_Cnpj_Imobiliaria", Cpf_Cnpj_Imobiliaria) oWord:Replace("@Registro_Creci_imobiliaria", Registro_Creci_imobiliaria ) oWord:Replace("@Primeiro_Responsavel_Imobiliaria", Primeiro_Responsavel_Imobiliaria ) oWord:Replace("@Registro_Creci_Primeiro_Responsavel_imobiliaria", Registro_Creci_Primeiro_Responsavel_imobiliaria ) oWord:Replace("@Cpf_Primeiro_Responsavel_imobiliaria", Cpf_Primeiro_Responsavel_imobiliaria ) oWord:Replace("@Segundo_Responsavel_Imobiliaria", Segundo_Responsavel_Imobiliaria ) oWord:Replace("@Registro_Creci_Segundo_Responsavel_imobiliaria", Registro_Creci_Segundo_Responsavel_imobiliaria ) oWord:Replace("@Cpf_Segundo_Responsavel_imobiliaria", Cpf_Segundo_Responsavel_imobiliaria ) *---------------------------------------------------------------------------- * Dados do Imovel *---------------------------------------------------------------------------- oWord:Replace("@Identificacao_Imovel", Identificacao_Imovel ) oWord:Replace("@Endereco_Imovel", Endereco_Imovel ) oWord:Replace("@Numero_Endereco_Imovel", Numero_Endereco_Imovel ) oWord:Replace("@Complemento_Endereco_Imovel", Complemento_Endereco_Imovel ) oWord:Replace("@Bairro_Imovel", Bairro_Imovel ) oWord:Replace("@Cidade_Imovel", Cidade_Imovel ) oWord:Replace("@Estado_Imovel", Estado_Imovel ) oWord:Replace("@Cep_Imovel", Cep_Imovel ) oWord:Replace("@Tipo_de_Imovel", Tipo_de_Imovel ) oWord:Replace("@Finalidade_Uso_Imovel", Finalidade_Uso_Imovel ) *---------------------------------------------------------------------------- * Dados do Contrato *---------------------------------------------------------------------------- oWord:Replace("@Prazo_em_Meses_Contrato", Prazo_em_Meses_Contrato ) oWord:Replace("@Inicio_Contrato", Inicio_Contrato ) oWord:Replace("@Termino_Contrato", Termino_Contrato ) oWord:Replace("@Dia_Vencimento_Aluguel", Dia_Vencimento_Aluguel ) oWord:Replace("@Valor_Contrato", Valor_Contrato ) oWord:Replace("@Valor_Caucao", Valor_Caucao ) oWord:Replace("@Multa_por_Atraso", Multa_por_Atraso ) oWord:Replace("@Juros_por_Atraso", Juros_por_Atraso ) *---------------------------------------------------------------------------- oWord:Preview() oWord:Visualizar() *oWord:PrintDoc() oWord:Save( ( (PT_DRV_EXP)+'\'+'Contrato_'+strzero(v_Numero_contrato,06,0)+'.DOC') ) // ASSIM PARA VISUALIZAR oWord:Close() *oWord:Visualizar( (CurDrive() +":\"+ CurDir() + '\RELS\'+'Contrato_NEW.DOC') ) oWord:End() ShellExecuteEx("winword.exe", ( (PT_DRV_EXP)+'\'+'Contrato_'+strzero(v_Numero_contrato,06,0)+'.DOC') ) RETURN Nil Quote Link to comment Share on other sites More sharing options...
joaosolution Posted January 30, 2019 Report Share Posted January 30, 2019 Marcio Boa tarde Você terá que utilizar o método oWord:RepHeader( cOld, cNew ) Para o cabeçalho. Att João Bosco Quote Link to comment Share on other sites More sharing options...
joaosolution Posted January 30, 2019 Report Share Posted January 30, 2019 Marcio Segue a classe: METHOD RepHeader(cOld, cNew) CLASS TWord Local oTexto2, oFind2 local oWindow := ::oActiveDoc:Get( "ActiveWindow" ) local oView := oWindow:Get( "View") oView:Set( "SeekView" , 9 ) // 9 Header 10 Footer ::oSelection := ::oTexto:Get( "HeaderFooter") oTexto2 := ::oSelection:Range() oFind2 := oTexto2:Get( "Find" ) oFind2:Set( "Text", cOld ) oFind2:Set( "Forward", .T. ) oFind2:Set( "Wrap", INT(1) ) oFind2:Set( "Format", .f. ) oFind2:Set( "MatchCase", .f. ) oFind2:Set( "MatchWholeWord", .f. ) oFind2:Set( "MatchWildcards", .f. ) oFind2:Set( "MatchSoundsLike", .f. ) oFind2:Set( "MatchAllWordForms", .f. ) oFind2:Invoke( "Execute") DO WHILE oFind2:Get( "Found" ) // Reemplaza todas las ocurrencias que coincidan oTexto2:Set( "Text", cNew ) oFind2:Invoke( "Execute") Enddo ::oWord:Get( "Selection" ) release oWindow, oView release otexto2, ofind2 RETURN nil Quote Link to comment Share on other sites More sharing options...
evandro Posted January 30, 2019 Report Share Posted January 30, 2019 Olá, Pegando carona, como faço para que a caixa de diálogo de impressão não abra quando mando direto para imprimir ( oWord:printDoc() ) ? Quote Link to comment Share on other sites More sharing options...
marcioe Posted January 31, 2019 Author Report Share Posted January 31, 2019 Marcio Segue a classe: METHOD RepHeader(cOld, cNew) CLASS TWord Local oTexto2, oFind2 local oWindow := ::oActiveDoc:Get( "ActiveWindow" ) local oView := oWindow:Get( "View") oView:Set( "SeekView" , 9 ) // 9 Header 10 Footer ::oSelection := ::oTexto:Get( "HeaderFooter") oTexto2 := ::oSelection:Range() oFind2 := oTexto2:Get( "Find" ) oFind2:Set( "Text", cOld ) oFind2:Set( "Forward", .T. ) oFind2:Set( "Wrap", INT(1) ) oFind2:Set( "Format", .f. ) oFind2:Set( "MatchCase", .f. ) oFind2:Set( "MatchWholeWord", .f. ) oFind2:Set( "MatchWildcards", .f. ) oFind2:Set( "MatchSoundsLike", .f. ) oFind2:Set( "MatchAllWordForms", .f. ) oFind2:Invoke( "Execute") DO WHILE oFind2:Get( "Found" ) // Reemplaza todas las ocurrencias que coincidan oTexto2:Set( "Text", cNew ) oFind2:Invoke( "Execute") Enddo ::oWord:Get( "Selection" ) release oWindow, oView release otexto2, ofind2 RETURN nil Obrigado amigo pela dica ficou Top de demais, perfeito... Aproveitando quem sabe tem como, eu faço esse contrato, dando os replaces, porem tem uma outra coisa que estava querendo fazer, importar o corpo de um outro arquivo Word, Por exemplo, tem o Contrato, e tem, o laudo que é gerado pelo sistema, em .DOC exemplo Iria fazer o troca dos dados com o oWord:Replace("@Old", New ) Porem em determinado local queria colocar o texto de um outro arquivo Word, como se fosse um Ctr+v e um Crt+v, Espero ter explicado Quote Link to comment Share on other sites More sharing options...
joaosolution Posted February 1, 2019 Report Share Posted February 1, 2019 Evandro Bom dia Quando utilizo oWord:PrintDoc() não apresenta a tela de seleção de impressora. Att João Bosco Quote Link to comment Share on other sites More sharing options...
evandro Posted February 1, 2019 Report Share Posted February 1, 2019 Olá, Já fiz de tudo e, tanto aqui quanto no cliente, abre a cada impressão. Como são muitas, fica impraticável. Quote Link to comment Share on other sites More sharing options...
joaosolution Posted February 1, 2019 Report Share Posted February 1, 2019 Evandro Posso te mandar a minha classe para você testar, comigo em desenvolvimento e em produção funciona sem problemas diretamente para a impressora. Att João Bosco Quote Link to comment Share on other sites More sharing options...
evandro Posted February 1, 2019 Report Share Posted February 1, 2019 Olá, Por favor. evandro@skillnet.com.br Antecipadamente, agradeço. Quote Link to comment Share on other sites More sharing options...
Jorge Andrade Posted February 1, 2019 Report Share Posted February 1, 2019 Ué, manda pra todos João, agradecemos a sua contribuição. []s, Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.