Word application

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

Moderador: Moderadores

leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Word application

Mensagem por leandrolinauer »

Boa tarde a todos.
Verifiquei no fórum sobre editar dados de um arquivo word trocando por variáveis, e apliquei em um documento que foi necessário agora.
Até feito já está, mas não consigo é o seguinte:
1- Chamar o print dialog do word para o usuário imprimir.
2- Abrir o documento trocar todos os dados mas bloquear alteração por parte do usuário.
3- Sair do word sem salvar, para não modificar as variáveis trocadas.
Segue o código abaixo.

Código: Selecionar todos

If ( oWord := Win_olecreateobject("Word.Application") ) != nil   
      oWord:Visible := .T. //para visualizar na tela
      oWord:WindowState := 0  ///para ?? 0 normal, 1 maxmize, 2 minimize

      oDoc  := oWord:Documents:Open(carq)  
      oText := oWord:Selection()
      oFind := oText:Find()
      oFind:MatchWholeWord:=.T. //somente a palavra inteira
      oFind:Wrap:=1 //sempre no inicio
      ///busca e troca a variavel
      oFind:Text:="@COMARCA"
      oFind:Execute()
      oText:Typetext(oCOMARCA) //ocomarca é a variavel ja preenchida antes
     //.... varias trocas
     //agora a parte que não funciona.
     //COPIEI DO FORUM
     //oWord:preview()    //NAO FUNCIONA                 // visualiza o documento no preview do Word
     //oWord:Visualizar()  //NAO FUNCIONA
     //oDoc:Close(False) //NAO FUNCIONA
     //oWord:PrintOut()  //NAO FUNCIONA
     //oWord:PrintDoc(.t.)   //NAO FUNCIONA
     //oWord:PrintPreview(.T.) //NAO FUNCIONA
     //oWord:PrintPreview:=.T. //FUNCIONA, ABRE O PREVIEW DO WORD
     //oWord:Invoke("Quit",0) //NAO FUNCIONA
     //oWord:Quit(0)  //NAO FUNCIONA
      //TENTEI DE TUDO PARA:
      //ABRIR O PRINT DIALOG DO WORD para selecionar a impressora que quero enviar, tipo PDF ou uma impressora do windows
      //FECHAR O WORD logo após imprimido.
EndIf     
Fico no aguardo se alguem souber como fazer isto com o word, lembrando que as variáveis no word está alterando certinho, posso chamar manualmente a imrpressora e fechar o documento, mas pede pra salvar, isto não pode.
Grato
:xau
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Word application

Mensagem por janio »

Eu sempre gero um NOVO documento a partir do original, deixando este último sempre intacto.

Tipo...
Original : contrato.doc

aí gero contrato001.doc, contrato002.doc,...contrato100.doc

janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Word application

Mensagem por fladimir »

Eu fazia assim tb, depois migrei pro FastReport achei melhor, mas o q o FAST Faz é manter um modelo interno e fazer a partir dele, acaba dando na mesma.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Word application

Mensagem por JoséQuintas »

Ou se é fixo, então mais prático gerar em PDF.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Word application

Mensagem por Eolo »

Usando o Word, o cliente TEM que ter o Word instalado. E se não tiver?

E, se tiver, qual a garantia que tudo vai funcionar sempre em todas as versões do Word? Amanhã, o cliente instala uma versão nova do Word e pode melar a coisa. E, se isso acontecer, toca você a mexer nos fontes de novo.

Eu uso o Win32Prn() do xHarbour (sim, ainda o xHarbour, console). Abro os gets pro usuário digitar o que for preciso, monto o job no Win32Prn(), escolho fontes, cores e o tudo o que for preciso, incluo imagens com o Win32Bmp(), imprimo contratos e o que for em qualquer impressora instalada e fim de papo. Simples, sem depender do Word nem de outros.

Tenho coisa rodando sem problemas há anos.

O único problema é se o Harbour não tiver um Win32prn() nem um Win32Bmp() similares ao do xHarbour...
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Word application

Mensagem por fladimir »

Grande Eolo!!!!! q bom ve-lo por aqui...

Complementando sua resposta o Harbour tem as funções equivalentes
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Word application

Mensagem por JoséQuintas »

O único problema é se o Harbour não tiver um Win32prn() nem um Win32Bmp() similares ao do xHarbour...
Se não tiver a gente inventa.... rs.... mas tem.

Mas pode nem precisar disso, pode ser genérico:
teste1.png
https://github.com/JoseQuintas/JoseQuin ... recibo.prg

Ou algo mais trabalhado:
teste2.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Word application

Mensagem por Toledo »

leandrolinauer escreveu:3- Sair do word sem salvar, para não modificar as variáveis trocadas.
O que você poderia tentar fazer é salvar o documento com outro nome.

Código: Selecionar todos

oDoc:SaveAs( "c:\temp\nomedoarquivo.doc")
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Word application

Mensagem por janio »

Eolo,

A Win32Prn tem preview?

Fladimir,

Poderia demonstrar como seria um código de relatório com FAST e postar a imagem do relatorio pra gente ter idéia de como ficou?

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Word application

Mensagem por leandrolinauer »

Bom dia a todos.
Grato pelo retorno, pelo que li nos retornos, então não há nenhuma possibilidade de fazer da forma como eu estava imaginando, mas tudo bem.
Quanto a gerar um arquivo diferente, na verdade é o que eu estou fazendo agora ele gera outro arquivo com o nome do cliente. exemplo:
ORIGINAL: Cobrança Judicial.docx
MODELO ALTERADO: Cobrança Judicial fulano de tal.docx (copiado do original e alterado as variáveis, ficando salvo)
o que eu não necessito é deixar salvo, o que vai inflando o diretório talvez, de lixo que não seria necessário guardar.

Quanto a problemas do word não funcionar em outras versões, terei que testar, mas como é software da empresa, e é eu que cuido, não me daria problemas visto que só geraria aonde tem o office instalado.

Pensei tbem em gerar em PDF, deixando o texto preso no sistema, mas aí se tiver que fazer uma alteração no texto do documento, terei que alterar o sistema, aí pensei, em fazer um documento TXT original com o texto que pode ser alterado a qualquer momento, e o sistema pega deste arquivo o texto para gerar em pdf trocando as variáveis de dados que são preenchidas pelo usuário, aí sim ficaria show, mas por enquanto isto daria trabalho demais e estou sem tempo para brincar com esta parte.

Então vou ficar com o modelo que faço agora, jogando no word e em outro arquivo copiado e deixando gravado, bom, tbem eu poderia apagar o arquivo no final da impressão, tbem é válido.
Valeu pela ajuda.
Um Harbraço a todos.
:xau
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Word application

Mensagem por fladimir »

Código: Selecionar todos

		cParagrafoUnico  := 'O PRIMEIRO VENCIMENTO FICA PARA ' + dt2dig(dDtPrimeiroVcto) 
		if nPercentualDesc>0 .and. nQtdMesesDesc > 0
			cParagrafoUnico += ', SENDO QUE NOS PRIMEIROS ' + STRZERO( nQtdMesesDesc,2)
			cParagrafoUnico += '(' + Extenso2(nQtdMesesDesc, .F.) + ') ' + if( nQtdMesesDesc > 1,'MESES','MES')
			cParagrafoUnico += ' SERA CONCEDIDO UM DESCONTO DE '
			cParagrafoUnico += allstr(nPercentualDesc) + '% (' + Extenso2(nPercentualDesc, .F.) + ') POR'
			cParagrafoUnico += 'CENTO A TITULO DE PROMOCAO, RETORNANDO AO VALOR ACIMA ESTIPULADO NO '
			cParagrafoUnico += 'MES SUBSEQUENTE AO PRIMEIRO VENCIMENTO AQUI ACORDADO, OU SEJA, RETORNARA '
			cParagrafoUnico += 'AO VALOR DE R$ ' + trim(TRANSF(nValor, '@E 999,999.99')) + '(' + Extenso2(nValor)
			cParagrafoUnico += ').' 	
		endif
		cMesesContrato := Extenso2(nQtdMesesContrato, .F.)

		cDtExtenso := DataExtenso(dDtContrato)
		cDtExtenso := substr(cDtExtenso,2)

		cRazao     := alltrim(cRazao)     
		cDoc1      := alltrim(transf(cDoc1, if( cTipo=='J', "@R 99.999.999/9999-99", "@R 999.999.999-99")))
		cDoc2      := if(empty(cDoc2) .and. cTipo == 'J', 'ISENTO',;
					   		if(empty(cDoc2) .and. cTipo == 'F', '------', alltrim(cDoc2)))
		cEnd       := alltrim(cEnd)       
		cNumEnd    := alltrim(cNumEnd)    
		cBairro    := alltrim(cBairro)    
		cCidade    := alltrim(cCidade)    
		cEstado    := alltrim(cEstado)    
		cCEP       := alltrim(cCEP)       
	
		cNome   := 'Contrato' + AbreviarNome(cRazao) + GeraNome('PDF',.F.)
		cNome   := strtran(cNome, ' ','.')
		cZip    := strtran(cNome, 'PDF', 'ZIP')	   
      cTitulo := 'Contrato Cliente ' + cRazao

		*-- Gera no FAST
		oFR := frReportManager():new(NIL, cTitulo) 
	   oFR:PreviewOptions:SetZoomMode(2)  
		oFR:LoadFromResource( cNomeFR ) 
		oFR:PrepareReport()
		oFR:ShowReport()   
	   oFR:DestroyFR()
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Paredes01
Usuário Nível 2
Usuário Nível 2
Mensagens: 52
Registrado em: 20 Mai 2012 11:22
Localização: Mérida, Yucatán, México

Word application

Mensagem por Paredes01 »

hola
Puede por favor compartir su archivo *.fr3 (cNomeFR)
Saludos
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Word application

Mensagem por fladimir »

Devido a questões internas removi alguns trechos e alterei alguns nomes, mas em suma segue pra ter ideia.
contratosistema.fr3.txt
Relatorio Fast FR3 (renomear a extensao)
(31.25 KiB) Baixado 121 vezes
contratosistema.rtf
Relatorio RTF q compoe o FR3
(81.29 KiB) Baixado 125 vezes
Atenção, o RTF (q seria o DOC com as variaveis) compõe o FR3 q após compilado fica tudo dentro do EXE não precisando nem o FR3 nem do RTF
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Paredes01
Usuário Nível 2
Usuário Nível 2
Mensagens: 52
Registrado em: 20 Mai 2012 11:22
Localização: Mérida, Yucatán, México

Word application

Mensagem por Paredes01 »

wow, fladimir

cómo agregar mi fr3 al EXE ?
cómo lo llamo o (lo cargo) desde mi programa ?

Saludos
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Word application

Mensagem por fladimir »

tenho um arquivo .RC exemplo MeuApp.RC

Dentro dele referencio os FR3 com um ALIAS para chamar na rotina, exemplo:

Conteudo do MeuApp.RC

Código: Selecionar todos

AppIcon                      ICON         "Resources\\Icon_04.ico"
ContratoSistema          RCDATA    "C:\Projetos\Sistema\Relatorios\ContratoSistema.FR3"
Ai na rotina faço conforme postei o código:

Código: Selecionar todos

oFR:LoadFromResource( cNomeFR )  //------> onde cNomeFR aki seria    "ContratoSistema" que defini no MeuApp.RC

Ai com isto, mando somente o EXE pro cliente, no EXE tem o FR3 q por sua vez tem embutido o RTF
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Responder