Theotokos Posted December 29, 2011 Report Share Posted December 29, 2011 Bom Dia!!! Tem como abrir um arquivo do Word em uma DIALOG? ou seja, mostrar o conteudo do arquivo .doc em uma dialog sem precisar abrir o Word. Vlw! Feliz Ano NOVO. Quote Link to comment Share on other sites More sharing options...
Theotokos Posted December 29, 2011 Author Report Share Posted December 29, 2011 Bom Dia!!! Tem como abrir um arquivo do Word em uma DIALOG? ou seja, mostrar o conteudo do arquivo .doc em uma dialog sem precisar abrir o Word. Vlw! Feliz Ano NOVO. Quote Link to comment Share on other sites More sharing options...
gibaf Posted December 29, 2011 Report Share Posted December 29, 2011 Ola... uma x tive q implementar isso no sistema, e a melhor forma q foi possivel, foi com TRichEdit(). []'s Gilberto Frohlich - Toledo/PR giba_f@hotmail.com giba_f@yahoo.com.br xHarbour xBuild+Fivewin 2.7+PellesC+(Postgres+DB2) Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted December 29, 2011 Report Share Posted December 29, 2011 Olá Uso o brOffice desta forma, abro ".DOC" ou ".ODT" e exibo o texto em um Dialog. Veja o exemplo: /* ** autor: JOSÉ MARIA DA SILVA (JMSILVA) ** xHarbour 1.2.1 com FIVEWIN ** DATA: 29/12/2011 ** CIDADE: CARAGUATATUBA/SP ** OBS: PRECISA TER BROFFICE INSTALADO */ #INCLUDE "FIVEWIN.CH" #include "FGet.ch" Function Main () Local oService,oDesktop,oDocument,oTexto Local oDlg,oGet,cVarTxt,cFile,aProp:={} cFile := cGetFile("Arquivo (doc,odt)|*.doc;*.odt|",; "Selecione o Arquivo (Doc/Odt)", 4 ) IF EMPTY(cFILE) ; RETURN nil ; ENDIF cFile := "file:///"+StrTran(cFile,"\","/") TRY oService := TOleAuto():New("com.sun.star.ServiceManager") CATCH MSGSTOP("Desculpe, precisa ter o BrOffice instalado.","Alerta") RETURN NIL END oDesktop := oService:createInstance("com.sun.star.frame.Desktop") AAdd(aProp,MakePropertyValue(oService,"Hidden",.T.)) //seta prop para ocultar oDocument := oDesktop:loadComponentFromURL(cFile, "_blank", 0, aProp) // {}) //abre o doc //OBTÉM O TEXTO oTexto = oDocument:getText() cVarTxt := oTexto:getString() oDocument:Close(.T.) //fechao doumento DEFINE DIALOG oDlg TITLE "Visualiza documentos doc/odt" size 640,480 @ 0.5, 01 FORMAT GET oGet VAR cVarTXT OF oDlg SIZE 310,220 UPDATE ACTIVATE DIALOG oDlg CENTERED Return Nil **============================================================================== STATIC FUNCTION MakePropertyValue(oService,cName,nValue) **============================================================================== LOCAL oStruct := oService:Bridge_GetStruct("com.sun.star.beans.PropertyValue") oStruct:Name := cName oStruct:Value := nValue RETURN(oStruct) id=code>id=code>Feliz 2012 a todos xHarbour (9376), Fivewin 10/11 Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted December 29, 2011 Report Share Posted December 29, 2011 Olá, eu de novo! Se a ideia e visualizar o DOC na integra sem editar, a melhor opção seria está. /* ** autor: JOSÉ MARIA DA SILVA (JMSILVA) ** xHarbour 1.2.1 com FIVEWIN ** DATA: 29/12/2011 ** CIDADE: CARAGUATATUBA/SP ** OBS: PRECISA TER BROFFICE INSTALADO ** “writer_pdf_Export†=> Para salvar arquivos do Writer como PDF */ #INCLUDE "FIVEWIN.CH" Function Main () Local oService,oDesktop,oDocument,oZip,oTip,oBRUSH,oActiveX Local oDlg,oGet,cFile,aProp:={},cFilePDF,cSUrl cFile := cGetFile("Arquivo (doc,odt)|*.doc;*.odt|",; "Selecione o Arquivo (Doc/Odt)", 4 ) IF EMPTY(cFILE) ; RETURN nil ; ENDIF cFile := "file:///"+StrTran(cFile,"\","/") TRY oService := TOleAuto():New("com.sun.star.ServiceManager") CATCH MSGSTOP("Desculpe, precisa ter o BrOffice instalado.","Alerta") RETURN NIL END oDesktop := oService:createInstance("com.sun.star.frame.Desktop") AAdd(aProp,MakePropertyValue(oService,"Hidden",.T.)) //seta prop para ocultar oDocument := oDesktop:loadComponentFromURL(cFile, "_blank", 0, aProp) // {}) //abre o doc //exportar para pdf cFilePDF := "e:\xhbtest\test_PDF.pdf" cSUrl := "file:///"+StrTran(cFilePDF,"\","/") oZip := MakePropertyValue(oService, "CompressMode", 1) oTip := MakePropertyValue(oService, "FilterName", "writer_pdf_Export") oDocument:storeToURL(cSUrl, {oZip,oTip}) oDocument:Close(.T.) //fechao doumento DEFINE BRUSH oBrush STYLE "BORLAND" DEFINE DIALOG oDlg TITLE "Visualiza documentos doc/odt" size 640,480; BRUSH oBrush oActiveX := TActiveX():New(oDlg,"AcroPDF.PDF.1",3,2,; oDlg:nRight/2-5,oDlg:nBottom/2-5) ACTIVATE DIALOG oDlg CENTERED; ON INIT (oActiveX:Do("LoadFile",cFilePDF), oActiveX:Do("SetCurrentPage",1)) oDlg:End() //apaga pdf //Ferase(cFilePDF) Return Nil **============================================================================== STATIC FUNCTION MakePropertyValue(oService,cName,nValue) **============================================================================== LOCAL oStruct := oService:Bridge_GetStruct("com.sun.star.beans.PropertyValue") oStruct:Name := cName oStruct:Value := nValue RETURN(oStruct) id=code>id=code>Feliz 2012 a todos xHarbour (9376), Fivewin 10/11 Quote Link to comment Share on other sites More sharing options...
Theotokos Posted December 29, 2011 Author Report Share Posted December 29, 2011 Vlw amigos, vou testar!!! Quote Link to comment Share on other sites More sharing options...
Theotokos Posted December 29, 2011 Author Report Share Posted December 29, 2011 Vlw amigos! mas esta opção tem que ter broffice instalado... Quote Link to comment Share on other sites More sharing options...
Theotokos Posted December 30, 2011 Author Report Share Posted December 30, 2011 teria solução para Office Microsoft?id=red> Quote Link to comment Share on other sites More sharing options...
gibaf Posted December 30, 2011 Report Share Posted December 30, 2011 intao... como disse lah em cima (hehehe) citação:Ola... uma x tive q implementar isso no sistema, e a melhor forma q foi possivel, foi com TRichEdit(). []'s Gilberto Frohlich - Toledo/PR giba_f@hotmail.com giba_f@yahoo.com.br xHarbour xBuild+Fivewin 2.7+PellesC+(Postgres+DB2) id=quote>id=quote>ou seja, nao precisa ter nem word nem oppen office instalado... tudo eh controlado pela propria app, e nao deixa nada a desejar comparado ao word ou oppen office... creio q vale a pena tambem vc avaliar com o TRichEdit(). veja a figura copiada da app: http://imageshack.us/photo/my-images/233/wordnaapp.png/ []'s Editado por - gibaf on 30/12/2011 17:14:25 Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted December 31, 2011 Report Share Posted December 31, 2011 A solução apresentada pelo Gibaf é plausÃvel, tb a uso, porém gostaria perguntá-lo como faz para LER um arquivo do Word (.doc) obter o seu conteúdo para visualizar/editar o conteúdo com TRichEdit() sem que tenha instanciado ActiveX do Word. (É possÃvel, sem que o usuário salve o arquivo como .RTF? parece que este é o problema do amigo). Quanto ao BROFFICE lembrando é gratuito basta instalar mesmo q o cliente não usa, em alguns casos adotaram na empresa o BROFFICE como padrão. Qto uma solução para Office Microsoft vou tentar cria um exemplo para postar, mas se eu conseguir vai precisar ter o pacote da Microsoft instalado, pelo menos por hora é a solução que posso sugerir. Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted December 31, 2011 Report Share Posted December 31, 2011 Olá amigo, como prometi fiz uma rotina para o Word, porém não testei pq não tenho Word instalado, segue o site que usei para consulta. Espero que tenha ajudado, feliz 2012! a vc e todos os nossos amigos... /* Site para pesquisa: http://msdn.microsoft.com/en-us/library/aa211881%28v=office.11%29.aspx */ #Include "Fivewin.ch" **============================================================================== Function Main() **============================================================================== LOCAL cFile := CurDrive()+":\"+CurDir()+"\teste.doc" LOCAL oWord, oDocument, oText, cText TRY oWord := CreateObject( "Word.Application" ) CATCH MsgStop("ERRO! Word não instalado.","Alerta") RETURN Nil END oDocument := oWord:documents:open(cFile) //abre um arquivo doc/rtf // get -> seleciona o objeto oText := oWord:selection() // oculta o word oWord:visible := .F. cText := oText:Text oDocument:close() //fecha o doc oWord:quit() //finaliza MsgInfo(cText) Return Nil id=code>id=code>Agora vou para beira do Mar ver a queima fogos.....apesar da chuva..... Quote Link to comment Share on other sites More sharing options...
gibaf Posted January 2, 2012 Report Share Posted January 2, 2012 se quizer abrir arquivo do word (com o word instalado no computador), faz asssim: ShellExecute( GetActiveWindow(), "open", "ArquivoWord.doc", , cPath , ) id=code>id=code>Editado por - gibaf on 02/01/2012 17:40:38 Quote Link to comment Share on other sites More sharing options...
Theotokos Posted January 2, 2012 Author Report Share Posted January 2, 2012 Vlw! amigo! FELIZ 2012.... citação:Olá amigo, como prometi fiz uma rotina para o Word, porém não testei pq não tenho Word instalado, segue o site que usei para consulta. Espero que tenha ajudado, feliz 2012! a vc e todos os nossos amigos... /* Site para pesquisa: http://msdn.microsoft.com/en-us/library/aa211881%28v=office.11%29.aspx */ #Include "Fivewin.ch" **============================================================================== Function Main() **============================================================================== LOCAL cFile := CurDrive()+":\"+CurDir()+"\teste.doc" LOCAL oWord, oDocument, oText, cText TRY oWord := CreateObject( "Word.Application" ) CATCH MsgStop("ERRO! Word não instalado.","Alerta") RETURN Nil END oDocument := oWord:documents:open(cFile) //abre um arquivo doc/rtf // get -> seleciona o objeto oText := oWord:selection() // oculta o word oWord:visible := .F. cText := oText:Text oDocument:close() //fecha o doc oWord:quit() //finaliza MsgInfo(cText) Return Nil id=code>id=code>Agora vou para beira do Mar ver a queima fogos.....apesar da chuva..... id=quote>id=quote> Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted January 4, 2012 Report Share Posted January 4, 2012 Após fazer testes verifiquei que faltou três linhas de comandos para rotina funcionar corretamente, que estão grafadas com "//NOVO". /* Site para pesquisa: http://msdn.microsoft.com/en-us/library/aa211881%28v=office.11%29.aspx */ #Include "Fivewin.ch" **============================================================================== Function Main() **============================================================================== LOCAL cFile := CurDrive()+":\"+CurDir()+"\teste.doc" LOCAL oWord, oDocument, oText, cText TRY oWord := CreateObject( "Word.Application" ) CATCH MsgStop("ERRO! Word não instalado.","Alerta") RETURN Nil END // oculta o word oWord:visible := .F. //-- oDocument := oWord:documents:open(cFile) //abre um arquivo doc/rtf //-- oDocument:Activate() //novo //-- oRng := oDocument:Content //novo oRng:Select() //novo //-- oText := oWord:selection() cText := oText:Text //-- oDocument:close() //fecha o doc oWord:quit() //finaliza //-- MsgStop(cText) Return Nil id=code>id=code>Editado por - JMSILVA on 04/01/2012 09:28:54 Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted January 4, 2012 Report Share Posted January 4, 2012 Boa Tarde Rone.. Uso assim para consultar, os empregadores(Clientes) fazem a listagem no Word durante o mês todo e vão me mandando aleatoriamente, vou salvando cada um em sua pasta, depois antes de fazer os fechamentos mensais abro para ver quem vai entrar de férias no mês para fazer os calculos dos encargos.. cDoc="C:\PESSOAL9\&wProp\FERIAS.DOC" && wProp é a pasta da emrpesaid=red> PRIVATE oDlgIE, oActiveX, cEvents:="", oExplorer Define Dialog oDlgIE From 0,0 TO 550,950 PIXEL Title " ..:: Acessando:"+cDoc oDlgIE:lHelpIcon:=.F. oActiveX:=TActiveX():New( oDlgIE, "Shell.Explorer",10,15,450,237 ) oDlgIE:oClient:=oActiveX // oDlgIE:bPainted = { | hDC | GradientFill( hDC, 0, 0, oDlgIE:nHeight, oDlgIE:nWidth, { { 0.50, 16054371, 8388608 } } ) } Activate Dialog oDlgIE Centered; On Init(mBarraStatus(cDoc),oActiveX:Do( "Navigate", cDoc )) Return(nil) Static Func mBarraStatus(cDoc) SET MESSAGE OF oDlgie TO "Consultas a tabelas de férias" 2007 RETURN(.t.) id=code>id=code>Abraços.. Luiz Arruda Corumbá-MS ico.corumba@gmail.com | http://www.facebook.com/profile.php?id=100000933378029 FiveWin 9.04 xHarbour PellesC Bcc Editado por - ico on 04/01/2012 17:13:15 Quote Link to comment Share on other sites More sharing options...
Theotokos Posted January 5, 2012 Author Report Share Posted January 5, 2012 Vlw! mas o arquivo não deveria abrir dentro do Dialog? é que qdo executo a tua rotina, ele abre o word e mostra o arquivo... mas se testo com uma pagina da internet na variavel cDoc ai abre na dialog... tem como, faltou alguma coisa que tenho que fazer? id=red> obrigado!!! citação:Boa Tarde Rone.. Uso assim para consultar, os empregadores(Clientes) fazem a listagem no Word durante o mês todo e vão me mandando aleatoriamente, vou salvando cada um em sua pasta, depois antes de fazer os fechamentos mensais abro para ver quem vai entrar de férias no mês para fazer os calculos dos encargos.. cDoc="C:\PESSOAL9\&wProp\FERIAS.DOC" && wProp é a pasta da emrpesaid=red> PRIVATE oDlgIE, oActiveX, cEvents:="", oExplorer Define Dialog oDlgIE From 0,0 TO 550,950 PIXEL Title " ..:: Acessando:"+cDoc oDlgIE:lHelpIcon:=.F. oActiveX:=TActiveX():New( oDlgIE, "Shell.Explorer",10,15,450,237 ) oDlgIE:oClient:=oActiveX // oDlgIE:bPainted = { | hDC | GradientFill( hDC, 0, 0, oDlgIE:nHeight, oDlgIE:nWidth, { { 0.50, 16054371, 8388608 } } ) } Activate Dialog oDlgIE Centered; On Init(mBarraStatus(cDoc),oActiveX:Do( "Navigate", cDoc )) Return(nil) Static Func mBarraStatus(cDoc) SET MESSAGE OF oDlgie TO "Consultas a tabelas de férias" 2007 RETURN(.t.) id=code>id=code>Abraços.. Luiz Arruda Corumbá-MS ico.corumba@gmail.com | http://www.facebook.com/profile.php?id=100000933378029 FiveWin 9.04 xHarbour PellesC Bcc Editado por - ico on 04/01/2012 17:13:15 id=quote>id=quote> Quote Link to comment Share on other sites More sharing options...
Theotokos Posted January 5, 2012 Author Report Share Posted January 5, 2012 Realmente não funcionou, mas agora sim... Vlw!!! Obrigado!!! citação:Após fazer testes verifiquei que faltou três linhas de comandos para rotina funcionar corretamente, que estão grafadas com "//NOVO". /* Site para pesquisa: http://msdn.microsoft.com/en-us/library/aa211881%28v=office.11%29.aspx */ #Include "Fivewin.ch" **============================================================================== Function Main() **============================================================================== LOCAL cFile := CurDrive()+":\"+CurDir()+"\teste.doc" LOCAL oWord, oDocument, oText, cText TRY oWord := CreateObject( "Word.Application" ) CATCH MsgStop("ERRO! Word não instalado.","Alerta") RETURN Nil END // oculta o word oWord:visible := .F. //-- oDocument := oWord:documents:open(cFile) //abre um arquivo doc/rtf //-- oDocument:Activate() //novo //-- oRng := oDocument:Content //novo oRng:Select() //novo //-- oText := oWord:selection() cText := oText:Text //-- oDocument:close() //fecha o doc oWord:quit() //finaliza //-- MsgStop(cText) Return Nil id=code>id=code>Editado por - JMSILVA on 04/01/2012 09:28:54 id=quote>id=quote> Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted January 5, 2012 Report Share Posted January 5, 2012 Ué ?? Não entendi.. pra mim fica assim ; Mas se já resolveu.. valeu.. Abraços.. Luiz Arruda Corumbá-MS ico.corumba@gmail.com | http://www.facebook.com/profile.php?id=100000933378029 FiveWin 9.04 xHarbour PellesC Bcc Quote Link to comment Share on other sites More sharing options...
Theotokos Posted January 5, 2012 Author Report Share Posted January 5, 2012 O Luiz! é assim que eu queria, mas no meu abre o word, aparece uma msg antes, dizendo se quero abrir, salvar ou cancelar... eu uso office 2010, tem alguma coisa haver? Quote Link to comment Share on other sites More sharing options...
Theotokos Posted January 5, 2012 Author Report Share Posted January 5, 2012 Luiz (ico) acontece assim: ele abre direto no word, e na dialog fica assim: Quote Link to comment Share on other sites More sharing options...
LUIS1361303120 Posted January 5, 2012 Report Share Posted January 5, 2012 Postei em dicas um exemplo com o .ocx, tem que registar o .ocx para acessar e instalado o office... http://www.fivewin.com.br/exibedicas.asp?id=1104 Quote Link to comment Share on other sites More sharing options...
Theotokos Posted January 5, 2012 Author Report Share Posted January 5, 2012 Vlw grande... vou la testar... obgdao citação:Postei em dicas um exemplo com o .ocx, tem que registar o .ocx para acessar e instalado o office... http://www.fivewin.com.br/exibedicas.asp?id=1104 id=quote>id=quote> Quote Link to comment Share on other sites More sharing options...
Theotokos Posted January 5, 2012 Author Report Share Posted January 5, 2012 Luiz nao consegui testar o teu exemplo, esta dando este erro: Aplicação =========== Nome e Local : D:\WinPRG\Vinhos\Grafico.EXE (32 bits) Size: 4,102,144 bytes Time from start: 0 hours 0 mins 9 secs Error occurred at: 05/01/2012, 18:36:49 Descrição do Erro : Error BASE/1005 Message not found: TACTIVEX:_TITLEBAR Stack Calls =========== Called from: tobject.prg => TACTIVEX:ERROR(172) Called from: tobject.prg => TACTIVEX:MSGNOTFOUND(205) Called from: tobject.prg => TACTIVEX:_TITLEBAR(0) Called from: officev.prg => (b)OFFICEVIEWER:OFFICEVIEWER(32) Called from: => OFFICEVIEWER:TITLEBAR(0) Called from: UTILEST.PRG => LERWORD(1669) Called from: GRAFICO.PRG => (b)BUILDMENU(355) Called from: MENU.PRG => TMENU:COMMAND(0) Called from: WINDOW.PRG => TWINDOW:COMMAND(0) Called from: MDIFRAME.PRG => TMDIFRAME:COMMAND(0) Called from: => TMDIFRAME:HANDLEEVENT(0) Called from: WINDOW.PRG => _FWH(0) Called from: => WINRUN(0) Called from: WINDOW.PRG => TMDIFRAME:ACTIVATE(0) Called from: GRAFICO.PRG => MAIN(285) id=code>id=code> Quote Link to comment Share on other sites More sharing options...
LUIS1361303120 Posted January 6, 2012 Report Share Posted January 6, 2012 desabilite a opcao dentro do seu exemplo: * oWord:TitleBar(.f.) pois ele tira o titulo do topo... esse objeto: oWord esta definido ,, tem que registrar tambem o officeviewer.ocx.... Quote Link to comment Share on other sites More sharing options...
Theotokos Posted January 6, 2012 Author Report Share Posted January 6, 2012 citação:desabilite a opcao dentro do seu exemplo: * oWord:TitleBar(.f.) pois ele tira o titulo do topo... esse objeto: oWord esta definido ,, tem que registrar tambem o officeviewer.ocx.... id=quote>id=quote>o objeto oWord esta declarada como PRIVATE e mesmo tirando o oWord:TitleBar(.f.) continua o erro.. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.