Página 1 de 1

juntar arquivos do word

Enviado: 20 Jun 2018 12:52
por carlos moc
Boa tarde eu uso TWord() pra gerar uma ficha de cliente e está funcionando blz,só que preciso juntar todas as fichas dos clientes em um só arquivo, tem como fazer isso ?

desde já obrigado pela atenção de todos

juntar arquivos do word

Enviado: 20 Jun 2018 19:04
por rochinha
Amiguinhos,

Olha este código e assimile o conceito:

Código: Selecionar todos

outdocname     := "_CONCATENATED.doc"
wdPasteDefault := 0
wdPageBreak    := 7
cPath          := ".\"

function MAIN // Processo
 word := win_CreateObject("Word.Application")
 DeleteOldOutput( outdocname )
 first := .t.
 cExtensao := "DOC"
 CONTADOR  := ADIR( cPath + "\*." + cExtensao )
 IF CONTADOR != 0
    DECLARE TXT_NOMES[ CONTADOR ]
    ADIR( cPath + "\*." + cExtensao, TXT_NOMES )
    FOR CONTADOR := 1 TO LEN( TXT_NOMES )
        cfpath := MemoRead( cPath + "\" + TXT_NOMES[CONTADOR] )
        if first
           outdoc := word:Documents:Add()
           outdoc:SaveAs( outdocname )
           Processa( cfpath, .t. )
           first = .f.
        else
           Processa( cfpath, .t. )
        end if
    NEXT
    If .Not. first
       outdoc:Save()
       outdoc:Close()
    EndIf
 ENDIF
 word:Quit()
return nil

function DeleteOldOutput( outdocname )
 If File( outdocname )
    fErase( outdocname )
 EndIf
return nil
 
function Processa( filename, insertBreak )
 doc := word:Documents:Open( filename )
 word:Selection:WholeStory()
 word:Selection:Copy()
 outdoc:Activate()
 if insertBreak
    word:Selection:InsertBreak( wdPageBreak )
 endif
 word:Selection:Paste()
 doc:Close()
return nil
Não testei.

juntar arquivos do word

Enviado: 22 Jun 2018 12:33
por carlos moc
Fiz algumas alterações e funcionou blz, só que está inserindo uma página em branco no final,já tentei de tudo mas não consegui retirar.kkkkk, quem consegui me avisa ai por favor, mas ja resolveu meu problema.

Código: Selecionar todos

function juntadoc()
outdocname     := '\rhino\concatenated.doc'
wdPasteDefault := 0
wdPageBreak    := 5
cPath          := '\rhino\wordtmp'
TXT_NOMES := {}
word := CreateObject("Word.Application")

if file( outdocname )
        fErase( outdocname )
endif
first := .t.
cExtensao := 'doc'
CONTADOR  := ADIR( cPath + '\*.' + cExtensao )

IF CONTADOR != 0

        TXT_NOMES := directory( cPath + '\*.' + cExtensao )

        for contador := 1 to len( txt_nomes )

                cFile  := cPath + '\' + TXT_NOMES[CONTADOR,1] 
                ctexto := MemoRead( cPath + '\' + TXT_NOMES[CONTADOR,1] )
                if first
                        outdoc := word:Documents:Add()
                        outdoc:SaveAs( outdocname )
                        Processa( cFile,.t.,contador ) 
                        first = .f.
                else
                        Processa( cFile,.t.,contador ) 
                endif
        next
        if .not. first
                outdoc:Save()
                outdoc:Close()
        endif
endif
word:quit()
return .t.
  
///////////////////////////////////////////////
//
///////////////////////////////////////////////
function Processa( cFile,insertBreak,contador )

doc := word:Documents:Open( cFile ) 

word:Selection:WholeStory()
word:Selection:Copy()
outdoc:Activate()
  
if insertBreak
        //word:Selection:InsertBreak( wdPageBreak )
endif
word:Selection:Paste()
doc:Close()
return .t.

juntar arquivos do word

Enviado: 22 Jun 2018 13:36
por rochinha
:xau :)Pos

juntar arquivos do word

Enviado: 22 Jun 2018 14:09
por carlos moc
Rochinha fiquei tão empolgado com o resultado que acabei me esquecendo de te agradecer, rapaz resolveu os meus problemas, agora posso gerar todos os relatorios do meu sistema em word e depois exporta pra pdf.obrigado,obrigado

juntar arquivos do word

Enviado: 22 Jun 2018 22:56
por rochinha
Amiguinhos,

carlos moc
acabei me esquecendo de te agradecer
Que é isso. Aqui somos uma comunidade. É ela quem nos agradece em buscar soluções e avolumar conhecimento.

Com certeza a sua dúvida também pode ser a de outro colega e a solução está aí, para todos. E na verdade foi você quem deu a solução.