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
Moderador: Moderadores
Ajuda com Word.Application
►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)
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)
Ajuda com Word.Application
Pessoal,
Acabei descobrindo como fazer:
nLinha:=1
nPagina:=1
oWord:Selection():GoTo(nLinha,,nPagina)
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)
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)
Ajuda com Word.Application
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.
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)
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)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Ajuda com Word.Application
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.
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.
