Página 1 de 1

Ajuda com Word.Application

Enviado: 27 Set 2012 10:26
por asimoes
Pessoal,

Estou implementado saída de relatório para o Microsoft Word usando Word.Application, a minha duvida é como posicionar após a impressão na primeira página do documento.

[]´s

Ajuda com Word.Application

Enviado: 27 Set 2012 10:56
por asimoes
Pessoal,

Acabei descobrindo como fazer:

nLinha:=1
nPagina:=1
oWord:Selection():GoTo(nLinha,,nPagina)

Ajuda com Word.Application

Enviado: 28 Set 2012 09:25
por asimoes
O funcionamento é sismples, a impressão deve ser direcionada para um arquivo texto e depois passar para o o nome do arquivo para o parametro da função Gera_WORD

Boa diversão.

Código: Selecionar todos

Gera_WORD((cArqPrint),"LISTA DE SOCIOS QUE DEVEM A ASSOCIACAO.DOC")  

Código: Selecionar todos

FUNCTION Gera_WORD(cArq,cNomeArq)
LOCAL lWord:=.T.
   IF ( oWord := Win_oleCreateObject( "Word.Application" ) ) = Nil
      Pare( "ATENÇÃO! Word não está  instalado nesta máquina. Não será  possível gerar o documento.")
      lWord:=.F.
   ENDIF
   IF lWord
      oDoc  := oWord:Documents:Add()
      oText := oWord:Selection()
      TRY
         oDoc:SaveAs("D:\DOCUMENTOS"+HB_PS()+cNomeArq)
      CATCH
         Pare( "ATENÇÃO! o documento "+cNomeArq+" está  aberto, feche-o  antes da impressão.")
         hJanela:=HWG_FindWindow(0 ,cNomeArq+" - Microsoft Word")
         hwg_BringWindowToTop( hJanela )
         ShowWindow( hJanela, SW_MAXIMIZE )
         RETURN .F.
      END
   
      oWord:Visible := .F.
   
      oText:PageSetup():Orientation:=0 // 0=Portrait, 1=Landscape

      oText:PageSetup():TopMargin:=30
      oText:PageSetup():BottomMargin:=10
      oText:PageSetup():LeftMargin:=30
      oText:PageSetup():RightMargin:=3

      oText:PageSetup():PageWidth:=595.35 
      oText:PageSetup():PageHeight:=841.95

      oText:Font:Name := "Courier New"
      oText:Font:Size := 11
      oText:Font:Bold := .F.

      FT_FUSE( cArq )

      DO WHILE !FT_FEOF()
         cLinha   :=FT_FREADLN()
         lEject   :=(Chr(12) $ cLinha) // Procura caracter EJECT
         lEspecial:=(Chr(27)+"P" $ cLinha)
         IF !lEspecial
            lEspecial:=(Chr(27)+"P"+Chr(15) $ cLinha)
         ENDIF
         * Elimina as formatações ou códigos de impressão
         cLinha:=StrTran(cLinha,Chr(12)) // Elimina caracter EJECT
         cLinha:=StrTran(cLinha,Chr(13))
         cLinha:=StrTran(cLinha,Chr(27)+"P"+Chr(15))
         cLinha:=StrTran(cLinha,Chr(12),Chr(13)+Chr(13))
         cLinha:=StrTran(cLinha,Chr(27)+"P")
         IF lEspecial
            FT_FSKIP()
            LOOP
         ENDIF
         oText:TypeText(cLinha+ hb_eol())
         FT_FSKIP()
         IF lEject .AND. !FT_FEOF()
            oText:InsertBreak(1) //Gera quebra de página no word.
         ENDIF
      ENDDO      
      FT_FUSE()
      oWord:Visible := .T.
      oWord:WindowState := 1
      oDoc:Save()
      nLinhaWord:=1
      nPaginaWord:=1
      oWord:Selection():GoTo(nLinhaWord,,nPaginaWord) //Posiciona na primeira linha da primeira página
   ENDIF
RETURN lWord

Ajuda com Word.Application

Enviado: 28 Set 2012 09:40
por Pablo César
Legal, gostei da ideia ! Parabéns e obrigado por compartilhar conosco !