Página 1 de 1

MS Word com merge

Enviado: 10 Jul 2010 20:49
por Hasse
Boa noite amigos.

Mais uma vez preciso de auxílio para o seguite assunto:

1-Tenho um arquivo mestre chamado "Teste.doc", com os dados abaixo:

Código: Selecionar todos

O Sr. <Nome>, <EstCivil>, residente à <Ender>, bairro de <Bairr>, cidade de <Cidad>, estado de <EstBr>.
2-Outro arquivo temporário chamado "Merge.txt", criado via aplicativo xHarbour, com os dados abaixo:

Código: Selecionar todos

<Nome>          Osmar Xavier Dias Ital
<EstCivil>      casado
<Ender>         Rua Gumercindo, 1.554
<Bairr>         Centro
<Cidad>         Jaraguá
<EstBr>         SC
Como fazer para fundir (merge) o segundo documento dentro o primeiro, automaticamente.

Trata-se do preenchimento automático de um Contrato.

Alguém tem experiência neste assunto e que possa me ajudar, dando sugestões, idéias ou soluções.

Re: MS Word com merge - RESOLVIDO

Enviado: 11 Jul 2010 10:30
por Hasse
Bom dia amigos.

Resolvi o assunto da seguinte forma:

1-Foi criado um arquivo "MatrizWP.RTF", que pode ser feito via 'MS Word' ou 'WordPerfect' (Corel).

Eu usei o WordPerfect pois cria um arquivo bem mais enxuto. Vejam:

MSWord - "MatrizMS.rtf " - 8.192 bytes
WordPerfect - "MatrizWP.rtf" - 4.096 bytes.

Para conferir, anexei os arquivos "Matriz.rtf" e o resultado final no "Arq002.rtf".

Exemplo:

Código: Selecionar todos

Eu, abaixo assinado, #@Nome@#, #@EstCivil@#, residente à #@Ender@#, bairro #@Bairr@#, CEP #@Cep@#, cidade de #@Cidad@#, estado de #@EstBr@#, declaro que recebi a máquina de costura industrial, marca #@Marc@#, tipo #@Typ@#, modelo #@Model@#, cabeçote número #@Numer@#, equipada com motor #@OrigMot@#.
2-A rotina abaixo lê este arquivo e faz a substituição das variáveis delimitadas por #@....@#.

3-A seguir o arquivo é gravado, ainda no formato RTF, com outro nome, sequencial, para manter o documentação para qualquer consulta posterior.

4-O arquivo é aberto no MSWord ou WordPerfect.

Código: Selecionar todos

Function Main()

USE Cadastro alias CAD

DBGoTo( 551 )                       && Simulando a localização do registro desejado.

c_Contrato := Memoread( "MatrizWP.rtf" )

c_Contrato := STRTRAN( c_Contrato, "#@Nome@#",     ALLTRIM( Cad->NOME ) )
c_Contrato := STRTRAN( c_Contrato, "#@EstCivil@#", ALLTRIM( Cad->CIVIL ) )
c_Contrato := STRTRAN( c_Contrato, "#@Ender@#",    ALLTRIM( Cad->ENDER ) )
c_Contrato := STRTRAN( c_Contrato, "#@Bairr@#",    ALLTRIM( Cad->BAIRRO ) )
c_Contrato := STRTRAN( c_Contrato, "#@Cep@#",      ALLTRIM( Cad->CEP ) )
c_Contrato := STRTRAN( c_Contrato, "#@Cidad@#",    ALLTRIM( Cad->CIDADE ) )
c_Contrato := STRTRAN( c_Contrato, "#@EstBr@#",    ALLTRIM( Cad->ESTADO ) )
c_Contrato := STRTRAN( c_Contrato, "#@Marc@#",     "Lanmax" )
c_Contrato := STRTRAN( c_Contrato, "#@Model@#",    "LM-303-HR" )
c_Contrato := STRTRAN( c_Contrato, "#@Typ@#",      "Overlock" )
c_Contrato := STRTRAN( c_Contrato, "#@Numer@#",    "091.355.495" )
c_Contrato := STRTRAN( c_Contrato, "#@OrigMot@#",  "importado" )

Memowrit("Arq002.rtf", c_Contrato)

cText2 := 'START "C:\Arquivos de programas\Microsoft Office\OFFICE11\WinWord.exe" Arq002.rtf'
RUN( cText2 )
Na realidade, o "Tico-e-Teco" encontraram a solução durante o sono e ela estava pronta e funcionando na minha cabeça pela manhã. Bastaram alguns testes.

O que ainda preciso saber é como fazer com que o MS Word, ao abrir o arquivo gerado, apresente-se à frente da tela do aplicativo e não atrás como está acontecendo agora. Há alguma solução para isto ?

Obrigado pela atenção daqueles que procuraram me auxiliar.

Re: MS Word com merge

Enviado: 12 Jul 2010 12:45
por ANDRIL
Hasse tenta assim:

Código: Selecionar todos

cText2 := 'START /max "C:\Arquivos de programas\Microsoft Office\OFFICE11\WinWord.exe" Arq002.rtf'
ou

Código: Selecionar todos

cText2 := 'CMD /C START /max "C:\Arquivos de programas\Microsoft Office\OFFICE11\WinWord.exe" Arq002.rtf'
Se nao der certo, obtenha ajuda sobre o comando CMD /? e START /? o caminho é por ai, isso supondo que voce esteja utilizando o XP.

Ate+,