Você está na página 1de 9

Integrao Protheus x MS Word Para efetuar a integrao entre um documento MS Word e o Protheus devemos criar um m odelo (.

dot) no formato desejado e incluir as devidas variveis. Antes, porm ser til configurarmos o Word de forma a visualizarmos as variveis includas. 1. Em Ferramen tas \ Opes selecione a opo

Para exibio das variveis, selecionar o campo cdigo de campos. Ser til tambm a sele o indicadores para a exibio dos indicadores no caso de utilizao de tabelas dinmicas, e que sero necessrias a implantao de macros. Obs. Ao trmino do desenvolvimento no esquecer de demarcar a opo de cdigo de campos

2. Para a incluso das variveis clique em Inserir \ Campo.

Selecione em categorias a opo automao de documento e em nomes de campos a opo Do Digite o nome da varivel que dever ser referenciada no rdmake. E selecione o boto O K. Obs.: Repita o passo 2 para todas as partes variveis do documento.

3. Para a incluso do indicador. Aps a incluso de todas as variveis no sistema, insira um indicador na tabela para i niciarmos o tratamento da macro. Posicione o cursor na ultima coluna da tabela e clique em inserir \ indicador... Nomeie o indicador, com o mesmo nome da macro que ser criada no documento e acion ada na rotina Protheus atravs da funo OLE_ExecuteMacro(), e clique no boto Adicionar

O indicador foi inserido Obs. Repita a operao 3 para todas as tabelas a serem inseridas dinamicamente. 4. Para importar uma macro, selecione Ferramentas \ Macro \ Editor do Visual Basi c para acionar o editor e a importe atravs do menu Arquivo \ Importar, em seguida se lecione o arquivo (.bas) e clique no boto abrir. (conforme demonstrado nas prximas 3 imagens.

5. Aps esta a importao da macro, clique no boto salvar, feche o editor e salve o mod elo do documento (.dot) Obs. Repita as operaes 4 e 5 para todas as macros existent es.

Modelo de rotina (.PRW) #include "rwmake.ch" User Function intword() @ 96,012 TO 250,400 DIALOG oDlg TIT LE OemToAnsi("Integracao com MS-Word") @ 08,005 TO 048,190 @ 18,010 SAY OemToAns i("Impressao de orcamentos") @ 56,130 BMPBUTTON TYPE 1 ACTION WordImp() @ 56,160 BMPBUTTON TYPE 2 ACTION Close(oDlg) ACTIVATE DIALOG oDlg CENTERED Return() Static Function WordImp() Local wcOrcam, wcData, wcCliente, wcNroLinha Local waC od := {} Local waDescr := {} Local waVTot := {} Local nAuxTot := 0 Local nK Loca l cPathDot := "C:\PROTHEUS\AP_PDV\DOT\INTWORD.DOT" Private hWord Close(oDlg) wcN umero wcData wcCliente := "121212" := AllTrim(Str(Day(dDataBase),2))+; de +Al lTrim(MesExtenso(dDataBase))+ de +; AllTrim(Str(Year(dDataBase),4)) := "CLIENT E TESTE INTEGRACAO WORD" for nK := 1 to 10 aAdd(waCod,"PR"+strZero(nK,3)) aAdd(waDescr,"PRODUTO NRO "+str Zero(nK,3)) aAdd(waVTot,Transform(nK*100,"@E 999,999,999.99")) nAuxTot += nK*100 next

//Conecta ao word hWord := OLE_CreateLink() OLE_NewFile(hWord, cPathDot ) //Mont agem das variaveis do cabecalho OLE_SetDocumentVar(hWord, Prt_numero, wcNumero ) OLE_SetDocumentVar(hWord, Prt_Data, wcData) OLE_SetDocumentVar(hWord, Prt_C liente, wcCliente) OLE_SetDocumentVar(hWord, Prt_nroitens,str(Len(waCod))) //variavel para identificar o numero total de linhas na parte variavel //Sera ut ilizado na macro do documento para execucao do for next //Montagem das variaveis dos itens. No documento word estas variaveis serao cria das //dinamicamente da seguinte forma: //prt_cod1, prt_cod2 ... prt_cod10 for nK := 1 to Len(waCod) OLE_SetDocumentVar(hWord,"Prt_Cod"+AllTrim(Str(nK)),waCod[nK ]) OLE_SetDocumentVar(hWord,"Prt_Descr"+AllTrim(Str(nK)),waDescr[nK]) OLE_SetDoc umentVar(hWord,"Prt_VTot"+AllTrim(Str(nK)),waVTot[nK]) next OLE_ExecuteMacro(hWo rd,"tabitens") OLE_SetDocumentVar(hWord, prt_totorc, Transform(nAuxTot,"@E 999 ,999,999.99")) OLE_UpdateFields(hWord) // Atualizando as variaveis do documento do Word If MsgYesNo("Imprime o Documento ?") Ole_PrintFile(hWord,"ALL",,,1) EndI f If MsgYesNo("Fecha o Word e Corta o Link ?") OLE_CloseFile( hWord ) OLE_CloseL ink( hWord ) Endif Return()

Modelo de macro (.BAS) Sub tabitens() Item Macro Macro recorded 31/03/2005 by Adalberto Dim nIten s As Integer Dim Campo As String Selection.GoTo What:=wdGoToBookmark, Name:="tab itens" Selection.Find.ClearFormatting With Selection.Find .Text = "" .Replacemen t.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False . MatchAllWordForms = False End With nItens = Val(ActiveDocument.Variables.ITEM("p rt_nroitens").Value) For K = 1 To nItens Insere uma nova linha na tabela Selec tion.MoveRight Unit:=wdCell Insere o campo Codigo do Produto Campo = "DOCVARIA BLE prt_cod" & Trim(Str(K)) Selection.Fields.Add Range:=Selection.Range, Type:=w dFieldEmpty, Text:=Campo, PreserveFormatting:=True Insere o campo Descricao do Produto Selection.MoveRight Campo = "DOCVARIABLE prt_descr" & Trim(Str(K)) Sele ction.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:=Campo, Preser veFormatting:=True Insere o campo Total Selection.MoveRight Campo = "DOCVARIAB LE prt_vtot" & Trim(Str(K)) Selection.Fields.Add Range:=Selection.Range, Type:=w dFieldEmpty, Text:=Campo, PreserveFormatting:=True Next End Sub