juntar arquivos do word

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

carlos moc
Usuário Nível 2
Usuário Nível 2
Mensagens: 68
Registrado em: 16 Out 2017 16:00
Localização: Montes Claros MG - Zap (38)99831-5319

juntar arquivos do word

Mensagem 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
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

juntar arquivos do word

Mensagem 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.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
carlos moc
Usuário Nível 2
Usuário Nível 2
Mensagens: 68
Registrado em: 16 Out 2017 16:00
Localização: Montes Claros MG - Zap (38)99831-5319

juntar arquivos do word

Mensagem 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.
Editado pela última vez por Toledo em 22 Jun 2018 13:24, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

juntar arquivos do word

Mensagem por rochinha »

:xau :)Pos
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
carlos moc
Usuário Nível 2
Usuário Nível 2
Mensagens: 68
Registrado em: 16 Out 2017 16:00
Localização: Montes Claros MG - Zap (38)99831-5319

juntar arquivos do word

Mensagem 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
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

juntar arquivos do word

Mensagem 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.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder