Ajuda com Word.Application

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ajuda com Word.Application

Mensagem 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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ajuda com Word.Application

Mensagem por asimoes »

Pessoal,

Acabei descobrindo como fazer:

nLinha:=1
nPagina:=1
oWord:Selection():GoTo(nLinha,,nPagina)
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ajuda com Word.Application

Mensagem 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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Ajuda com Word.Application

Mensagem por Pablo César »

Legal, gostei da ideia ! Parabéns e obrigado por compartilhar conosco !
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Responder