Você está na página 1de 8

Integrao Protheus x MS Word

Para efetuar a integrao entre um documento MS Word e o Protheus devemos criar um modelo (.dot) no formato desejado e incluir as devidas variveis. ntes! "or#m ser $til configurarmos o Word de forma a visuali%armos as variveis inclu&das. '. (m )erramentas * +",es selecione a o"o

Para exi-io das variveis! selecionar o cam"o .c/digo de cam"os0. Ser $til tam-#m a seleo do cam"o .indicadores0 "ara a exi-io dos indicadores no caso de utili%ao de ta-elas din1micas! em 2ue sero necessrias a im"lantao de macros.

Obs. Ao trmino do desenvolvimento no esquecer de demarcar a opo de cdigo de campos

3. Para a incluso das variveis cli2ue em Inserir * 4am"o.

Selecione em .categorias0 a o"o .automao de documento0 e em .nomes de cam"os0 a o"o .5oc6aria-le0

5igite o nome da varivel 2ue dever ser referenciada no rdma7e. ( selecione o -oto +8.

Obs.: Repita o passo 2 para todas as partes vari veis do documento.

9. Para a incluso do indicador.

"/s a incluso de todas as variveis no sistema! insira um indicador na ta-ela "ara iniciarmos o tratamento da macro. Posicione o cursor na ultima coluna da ta-ela e cli2ue em .inserir * indicador...0

:omeie o indicador! com o mesmo nome da macro 2ue ser criada no documento e acionada na rotina Protheus atrav#s da funo O!"#"$ecute%acro&'( e clique no boto Adicionar

+ indicador foi inserido

Obs. Repita a operao ) para todas as tabelas a serem inseridas dinamicamente.

;. Para im"ortar uma macro! selecione .)erramentas * Macro * (ditor do 6isual <asic0 "ara acionar o editor e a im"orte atrav#s do menu . r2uivo * Im"ortar0! em seguida selecione o ar2uivo (.-as) e cli2ue no -oto a-rir. (conforme demonstrado nas "r/ximas 9 imagens.

=.

"/s esta a im"ortao da macro! cli2ue no -oto salvar! feche o editor e salve o modelo do documento (.dot)

Obs. Repita as opera*es + e , para todas as macros e$istentes.

Modelo de rotina (.PRW)


#include "rwmake.ch" User Function intword() @ 96,012 ! 2"0,#00 $%&'!( o$l) % '* !em o&nsi("%nte)racao com +,-.ord") @ 0/,00" ! 0#/,190 @ 1/,010 ,&0 !em o&nsi("%m1ressao de orcamentos") @ "6,120 3+43U @ "6,160 3+43U !5 !5 04* 1 &6 %!5 .ord%m1() 04* 2 &6 %!5 6lose(o$l))

&6 %7& * $%&'!( o$l) 6*5 *8*$ 8eturn()

,tatic Function .ord%m1() 'ocal wc!rcam, wc$ata, wc6liente, wc5ro'inha 'ocal wa6od 9: ;< 'ocal wa$escr 9: ;< 'ocal wa7 ot 9: ;< 'ocal n&u= ot 9: 0 'ocal n> 'ocal c4ath$ot 9: "69?48! @*U,?&4A4$7?$! ?%5 .!8$.$! " 4riBate h.ord 6lose(o$l)) wc5umero wc$ata wc6liente 9: "121212" 9: &ll rim(,tr($aC(d$ata3ase),2))DE F de FD&ll rim(+es*=tenso(d$ata3ase))DF de FDE &ll rim(,tr(0ear(d$ata3ase),#)) 9: "6'%*5 * *, * %5 *(8&6&! .!8$"

Gor n> 9: 1 to 10 a&dd(wa6od,"48"DstrHero(n>,2)) a&dd(wa$escr,"48!$U ! 58! "DstrHero(n>,2)) a&dd(wa7 ot, ransGorm(n>I100,"@* 999,999,999.99")) n&u= ot D: n>I100 ne=t

JJ6onecta ao word h.ord 9: !'*A6reate'ink() !'*A5ewFile(h.ord, c4ath$ot ) JJ+onta)em das BariaBeis do caKecalho !'*A,et$ocument7ar(h.ord, F4rtAnumeroF, wc5umero) !'*A,et$ocument7ar(h.ord, F4rtA$ataF, wc$ata) !'*A,et$ocument7ar(h.ord, F4rtA6lienteF, wc6liente) !'*A,et$ocument7ar(h.ord, F4rtAnroitensF,str('en(wa6od)))

JJBariaBel 1ara identiGicar o numero total de linhas na 1arte BariaBel JJ,era utiliLado na macro do documento 1ara e=ecucao do Gor ne=t

JJ+onta)em das BariaBeis dos itens. 5o documento word estas BariaBeis serao criadas JJdinamicamente da se)uinte Gorma9 JJ1rtAcod1, 1rtAcod2 ... 1rtAcod10 Gor n> 9: 1 to 'en(wa6od) !'*A,et$ocument7ar(h.ord,"4rtA6od"D&ll rim(,tr(n>)),wa6odMn>N) !'*A,et$ocument7ar(h.ord,"4rtA$escr"D&ll rim(,tr(n>)),wa$escrMn>N) !'*A,et$ocument7ar(h.ord,"4rtA7 ot"D&ll rim(,tr(n>)),wa7 otMn>N) ne=t !'*A*=ecute+acro(h.ord,"taKitens") !'*A,et$ocument7ar(h.ord, F1rtAtotorcF, ransGorm(n&u= ot,"@* 999,999,999.99"))

!'*AU1dateFields(h.ord) JJ &tualiLando as BariaBeis do documento do .ord %G +s)0es5o("%m1rime o $ocumento O") !leA4rintFile(h.ord,"&''",,,1) *nd%G %G +s)0es5o("Fecha o .ord e 6orta o 'ink O") !'*A6loseFile( h.ord ) !'*A6lose'ink( h.ord ) *ndiG 8eturn()

Modelo de macro (.BAS)


,uK taKitens() F %tem +acro F +acro recorded 21J02J200" KC &dalKerto F $im n%tens &s %nte)er $im 6am1o &s ,trin) ,election.(o o .hat9:wd(o o3ookmark, 5ame9:"taKitens" ,election.Find.6learFormattin) .ith ,election.Find . e=t : "" .8e1lacement. e=t : "" .Forward : rue ..ra1 : wdFind6ontinue .Format : False .+atch6ase : False .+atch.hole.ord : False .+atch.ildcards : False .+atch,ounds'ike : False .+atch&ll.ordForms : False *nd .ith n%tens : 7al(&ctiBe$ocument.7ariaKles.% *+("1rtAnroitens").7alue) For > : 1 o n%tens

F %nsere uma noBa linha na taKela ,election.+oBe8i)ht Unit9:wd6ell F %nsere o cam1o 6odi)o do 4roduto 6am1o : "$!67&8%&3'* 1rtAcod" P rim(,tr(>)) ,election.Fields.&dd 8an)e9:,election.8an)e,

C1e9:wdField*m1tC,

e=t9:6am1o, 4reserBeFormattin)9: rue

F %nsere o cam1o $escricao do 4roduto ,election.+oBe8i)ht 6am1o : "$!67&8%&3'* 1rtAdescr" P rim(,tr(>)) ,election.Fields.&dd 8an)e9:,election.8an)e, C1e9:wdField*m1tC, F %nsere o cam1o otal ,election.+oBe8i)ht 6am1o : "$!67&8%&3'* 1rtABtot" P rim(,tr(>)) ,election.Fields.&dd 8an)e9:,election.8an)e, C1e9:wdField*m1tC, 5e=t *nd ,uK

e=t9:6am1o, 4reserBeFormattin)9: rue

e=t9:6am1o, 4reserBeFormattin)9: rue

Você também pode gostar