Documente Academic
Documente Profesional
Documente Cultură
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. Antes, porm ser til configurarmos o Word de forma a visualizarmos as variveis includas. 1. Em Ferramentas \ Opes selecione a opo
Para exibio das variveis, selecionar o campo cdigo de campos. Ser til tambm a seleo do campo indicadores para a exibio dos indicadores no caso de utilizao de tabelas dinmicas, em que sero necessrias a implantao de macros.
Digite o nome da varivel que dever ser referenciada no rdmake. E selecione o boto OK.
Aps a incluso de todas as variveis no sistema, insira um indicador na tabela para iniciarmos 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 acionada na rotina Protheus atravs da funo OLE_ExecuteMacro(), e clique no boto Adicionar
4. Para importar uma macro, selecione Ferramentas \ Macro \ Editor do Visual Basic para acionar o editor e a importe atravs do menu Arquivo \ Importar, em seguida selecione 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 modelo do documento (.dot) Obs. Repita as operaes 4 e 5 para todas as macros existentes.
Static Function WordImp() Local wcOrcam, wcData, wcCliente, wcNroLinha Local waCod := {} Local waDescr := {} Local waVTot := {} Local nAuxTot := 0 Local nK Local cPathDot := "C:\PROTHEUS\AP_PDV\DOT\INTWORD.DOT" Private hWord Close(oDlg) wcNumero wcData wcCliente := "121212" := AllTrim(Str(Day(dDataBase),2))+; ' de '+AllTrim(MesExtenso(dDataBase))+' de '+; AllTrim(Str(Year(dDataBase),4)) := "CLIENTE TESTE INTEGRACAO WORD"
for nK := 1 to 10 aAdd(waCod,"PR"+strZero(nK,3)) aAdd(waDescr,"PRODUTO NRO "+strZero(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 ) //Montagem das variaveis do cabecalho OLE_SetDocumentVar(hWord, 'Prt_numero', wcNumero) OLE_SetDocumentVar(hWord, 'Prt_Data', wcData) OLE_SetDocumentVar(hWord, 'Prt_Cliente', wcCliente) OLE_SetDocumentVar(hWord, 'Prt_nroitens',str(Len(waCod)))
//variavel para identificar o numero total de linhas na parte variavel //Sera utilizado na macro do documento para execucao do for next
//Montagem das variaveis dos itens. No documento word estas variaveis serao criadas //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_SetDocumentVar(hWord,"Prt_VTot"+AllTrim(Str(nK)),waVTot[nK]) next OLE_ExecuteMacro(hWord,"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) EndIf If MsgYesNo("Fecha o Word e Corta o Link ?") OLE_CloseFile( hWord ) OLE_CloseLink( hWord ) Endif Return()