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: 20420
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 20420
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 55
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 125 vezes
contratosistema.rtf
Relatorio RTF q compoe o FR3
(81.29 KiB) Baixado 129 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: 55
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