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.