Página 1 de 1

Como editar documentos/contratos no word com dados de dbf??

Enviado: 22 Jun 2009 11:20
por andrelucass
Prezados Senhores:

Gostaria que se possível, fossem postados, exemplos de como abrir um arquivo texto no Word ou Editor de Textos, com textos prontos já gravados em disco, Mesclados com informações advindas de dados informados nos gets do Clipper/Harbour (variáveis de exemplo: NOMECLI, CPF, ENDEREÇO, CIDADE, etc).

Abraços
André lucas Souza

-------------------------------------
Nota da Moderarção(Sygecom):
Titulo do Topico alterado para formatação minusculo.

Re: Como editar documentos/contratos no word com dados de dbf??

Enviado: 22 Jun 2009 11:53
por sygecom
Olá André,

Segue abaixo um exemplo:
Nesse exemplo vai ser procurado a CHAVES: [aEMP] e será subistituido por: Nome da empresa e será procurado tmb. por: [aENDEMP] e será subistituido por: Endereço da empresa

Qualquer duvida é só prender o grito.

Código: Selecionar todos

********************
Function BOLETO_WORD
********************
Local vPATH := curdrive()+':'+"\"+curdir()
Local aArray_CAMPOS := {}
//PRIVATE cPrinterName, cPrinterName_OLD := GetDefaultPrinter()

//New_PRINTSETUP( @cPrinterName )  // seleciona a impressora
//SETDEFAULTPRINTER(cPrinterName)  // define a impressora como padrão para o word imprimir direto

GravaLog("IMPRESSÃO DE BOLETO COM LAYOUT PERSONALIZADO")
IF FILE("res\boleto.doc")
   // MsgRun("Aguarde Gerando Documento para Impressão...")  // mensagem na tela

   AADD(aArray_CAMPOS,{"[aEMP]"    ,"Nome da empresa"} )
   AADD(aArray_CAMPOS,{"[aENDEMP]" ,"Endereço da empresa"} )

   Subistitui_Word( aArray_CAMPOS, vPATH+"\res\boleto.doc")
ELSE
   alert("O Sistema não achou o arquivos ( boleto.doc ) dentro da pasta \RES , Favor Revisar")
ENDIF
//SETDEFAULTPRINTER(cPrinterName_OLD)  // volta a impressora que era padrão
Return

*******************************************
Function Subistitui_Word( aCampos , cArqDoc)
*******************************************
local cDoc_Temp := GeraFile()+".doc" //
LOCAL oWord, oText, oDoc, oFind

IF File( cArqDoc )
   __copyfile( cArqDoc, (cDoc_Temp) )  // Salva um novo do original
   TRY
      oWord := GetActiveObject(  "Word.Application" )
   CATCH
      TRY
         oWord := CreateObject( "Word.Application" )
      CATCH
         alert("Não foi Possivel Achar o Word Instalado")
         RETURN
      END
   END

   oWord:Visible := .F. //PARA NÃO VISUALIZAR O DOCUMENTO
   oDoc := oWord:Documents:Open(cDoc_Temp)  //ABRE O WORD
   for x=1 to len( aCampos )
       oTexto := oDoc:Range()
       oFind  := oTexto:Get( "Find" )

       oFind:Set( "Text", aCampos[x,1] )
       oFind:Set( "Forward", .T. )
       oFind:Set( "Wrap", INT(1) )
       oFind:Set( "Format", .f.            )
       oFind:Set( "MatchCase", .f.         )
       oFind:Set( "MatchWholeWord", .f.    )
       oFind:Set( "MatchWildcards", .f.    )
       oFind:Set( "MatchSoundsLike", .f.   )
       oFind:Set( "MatchAllWordForms", .f. )

       oFind:Invoke( "Execute")

       DO WHILE oFind:Get( "Found" )    // Reemplaza todas las ocurrencias que coincidan

          oTexto:Set( "Text", aCampos[x,2] )
          oFind:Invoke( "Execute")
       Enddo
   next
   oWord:PrintOut()   //PARA IMPRIMIR DIRETO
   oWord:Invoke( "Quit",0)
*   oWord:QUIT()
else
   alert("O Sistema não achou o arquivo: ( " + cArqDoc + " ) dentro da pasta \RES , Favor Revisar")
endif
return nil

Function GERAFILE
Local cFILE := GETENV("temp")+ "\TEMP"+ ALLTRIM( STR( HB_RandomInt(99999) ))
RETURN(cFILE)

Re: Como editar documentos/contratos no word com dados de dbf??

Enviado: 28 Jun 2009 11:38
por billy1943
Um dos modos mais práticos de editar documentos/contratos no Word, utilizando arquivos de dados do Clipper, é gerando um arquivo em .RTF e depois encaminhá-lo para o WORD.

Eu utilizo essa fórmula para todo tipo de documento (boleto com código de barras, contratos, recibos) enfim todo tipo de relatório que o Clipper deixa a desejar, pela sua limitação de fontes, tamanhos, justificação, etc.

A única coisa a se estudar com afinco é como dominar o RTF, mas uma vez implementado acabam-se os problemas com documentos mais elaborados do que simples listagens tabulares.

O que eu poderia te indicar de início é buscar exemplos de geração de arquivos em .RTF, através do Clipper e mais nada.

Se alguém se interessar e não tiver a Bibliotecartf.doc, entrar em contato que eu a envio.