Page 1 of 1

Colocar Excel/Word en Aplicacion

PostPosted: Sat May 18, 2013 12:09 pm
by cnavarro
Buenos dias a todos
Estoy haciendo pruebas con OLE y me encuentro el siguiente problema:

Excel: he conseguido incrustar en un Dialog de un Folder que es lo que necesito
He seguido las instrucciones que aparecen en el siguiente LINK

http://forums.fivetechsupport.com/viewtopic.php?f=6&t=21028&p=111658&hilit=incrustar+ole#p111658

aunque tengo problemas cuando dejo el foco y vuelvo al dialogo que contiene el Folder, ya que tengo que pinchar en la barra de edicion para que pueda moverme por la hoja. Permite pinchar con el mouse pero no permite editar.
Tambien estoy estudiando cómo puedo hacer para que salga la barra de herramientas, ya que solo sale la barra de edicion.

Code: Select all  Expand view

           oFldUtiles:SetOption( nOpt )
           oBook := oExcel:Workbooks:Add()
           oHoja :=  oExcel:ActiveSheet()
           Sysrefresh()

           // No hace falta ya que se maximiza abajo
           //oExcel:Left     := 0
           //oExcel:Top      := 0
           //oExcel:Height   := 320
           //oExcel:Width    := 590

           SetWindowLong(oExcel:hWnd,-16,"L") //Es la función API SetWindowLongA, en este caso quita la barra de titulo de excel
           //SetForeWin(oExcel:hWnd) //Es la funcion API SetForegroundWindow tiene que ir antes de la llamada a setparent()
           //SetParent(oExcel:hWnd,oWnd:hWnd) //Incrusta Excel en mi ventana
           //oWnd:SetText( cverotc + ' - Libro abierto: '+clibro )

           oExcel:ActiveWorkBook:Protect('',.f.,.f.) //Para poder manupilar el estado de la venta del libro
           oExcel:WindowState            := -4137 //Se quitan los botones de maximizar, minimizar y cerrar
           oExcel:Windows(1):WindowState := -4137 //Se maximiza Excel en mi ventana // -4140 Minimiza Excel
           oExcel:ScreenUpdating         := .T.
           oExcel:Visible                := .T. //Hace Excel visible
           oExcel:DisplayAlerts          := .F.

           //oFldUtiles:aDialogs[ nOpt ]:bGotFocus  := { || oFldUtiles:aDialogs[ nOpt ]:Refresh(), SysRefresh() }
           oFldUtiles:aDialogs[ nOpt ]:bGotFocus  := { || oFldUtiles:Refresh() }          
           SetParent( oExcel:hWnd ,  oFldUtiles:aDialogs[ nOpt ]:hWnd )
 


Word:
He mirado los ejemplos que hay en FWH de Word.prg y Wordtable.prg, pero están hechos sobre una ventana y no sobre un dialog de un Folder.

Como no puedo incrustar la ventana del objeto, Word se ejecuta fuera de la Aplicacion
No puedo incrustar la ventana en el dialogo del FolderEx, la instruccion que uso en Excel, en Word me da error
Por que en Excel funciona y en Word no?

Code: Select all  Expand view

           oFldUtiles:SetOption( nOpt )

           oDoc := oWord:Documents:Add()
           SysRefresh()
           oWord:WindowState            := -4137 //Se quitan los botones de maximizar, minimizar y cerrar

           oWord:Visible                := .T. //Hace Word visible

           SetParent( oWord:hWnd,  oFldUtiles:aDialogs[ nOpt ]:hWnd )
           // Esta instruccion me da error, me dice que hWnd no existe como propiedad de oWord
 


Como puedo solucionarlo?
Gracias

Re: Colocar Excel/Word en Aplicacion

PostPosted: Sun Aug 28, 2016 9:43 pm
by MGA
Sr. Cristobal Navarro, espero que te ajude, testei com HARBOUR e funcionou perfeitamente. :D


/*********************************************/
procedure AbrePlanilhaExcel( cPlanilha )
/*
*/
local oError, oExcel, cTitulo

Default cPlanilha := ''

if s_oWndExcel != nil
if !iszoomed(s_oWndExcel:hwnd)
s_oWndExcel:Maximize()
endif
return
endif

if !Empty(cPlanilha) .and. !File(cPlanilha)
MsgStop('Planilha informada não foi localizada. Verifique!', 'Atenção!')
return
endif

TRY
oExcel := CreateObject( "Excel.Application" )
CATCH oError
RetornaErrorTryCatch( oError, 'PLANILHA EXCEL' )
Return
END

cTitulo := ".:: EXCEL ::. "+Alltrim(cPlanilha)
oExcel:Workbooks:Open(cPlanilha)
SysRefresh()

define window s_oWndExcel mdichild of M->oWnd vscroll title cTitulo

s_oWndExcel:bKeyDown := {| nKey | IIf(nKey==VK_ESCAPE,s_oWndExcel:end(),;
IIf(nKey==VK_F6 .and. len(M->oWnd:oWndClient:aWnd) > 1, M->oWnd:NextWindow(),))}

activate window s_oWndExcel maximized ON Init(OnInitExcel(@oExcel));
Valid(ValidExcel( oExcel ))

return

/*********************************************/
static procedure OnInitExcel(oExcel)
/*
*/
SetWindowLong(oExcel:hWnd,-16,"L")
oExcel:DisplayAlerts := .F.
oExcel:ActiveWorkBook:Protect('',.f.,.f.) //Para poder manupilar el estado de la venta del libro
oExcel:WindowState := -4137 //Se quitan los botones de maximizar, minimizar y cerrar
oExcel:Windows(1):WindowState := -4137 //Se maximiza Excel en mi ventana
oExcel:ScreenUpdating := .T.
oExcel:Visible := .T.
oExcel:DisplayAlerts := .F.

s_oWndExcel:bGotFocus := { || IIf( s_oWndExcel != nil, s_oWndExcel:Refresh(),) }
SetParent(oExcel:hWnd, s_oWndExcel:hWnd) //Incrusta Excel en mi ventana
return

/*********************************************/
static function ValidExcel( oExcel )
/*
*/
oWorkBooks := oExcel:WorkBooks
oWorkBooks:Close()
oWorkBooks:= NIL

oExcel:Quit()
oExcel:= NIL

Hb_GCall(.t.)
s_oWndExcel := nil

return(.t.)

Re: Colocar Excel/Word en Aplicacion

PostPosted: Sun Aug 28, 2016 10:02 pm
by cnavarro
El mensaje era muy antiguo y ya lo solucioné, pero
Muchas gracias por el código

Saludos

Re: Colocar Excel/Word en Aplicacion

PostPosted: Mon Aug 29, 2016 2:49 am
by MGA
Sr. Cristobal,

é possível ABRIR um DOCUMENTO e ao fechar a JANELA WINDOW salvar o documento?

obrigado

Re: Colocar Excel/Word en Aplicacion

PostPosted: Tue Aug 30, 2016 9:43 pm
by cnavarro
SGS wrote:Sr. Cristobal,

é possível ABRIR um DOCUMENTO e ao fechar a JANELA WINDOW salvar o documento?

obrigado


Disculpa, no entiendo bien tu mensaje
Quieres abrir un documento y que no permita guardar/grabar el documento?

Esta es la traducción que me hace google translate
Puede abrir un documento y cerrar la ventana ventana Guardar el documento?

Re: Colocar Excel/Word en Aplicacion

PostPosted: Wed Aug 31, 2016 10:49 am
by MGA
Sr. Cristobal,

Me gustaría abrir un documento, cambiar y guardar. :)

Re: Colocar Excel/Word en Aplicacion

PostPosted: Wed Aug 31, 2016 12:15 pm
by Sistem
SGS, veja o link https://msdn.microsoft.com/pt-br/librar ... 94819.aspx
tem um exemplo em VBA

algo do tipo
ActiveWorkbook.Close SaveChanges:=False

talvez ajude


e

http://www.pctoledo.com.br/forum/viewto ... =4&t=14925

oExcel:ActiveWorkBook:SaveAs(cARQ,50)

Re: Colocar Excel/Word en Aplicacion

PostPosted: Wed Aug 31, 2016 1:34 pm
by MGA
Obrigado System

Re: Colocar Excel/Word en Aplicacion

PostPosted: Wed Aug 31, 2016 1:59 pm
by MGA
Sr. Cristobal,

En un oficce con la versión : 16.0.7070.2033 , que está pasando en el siguiente problema de la pantalla .

Se desalineado con la ventana.

Usted sabe si se puede solucionar el problema?

Gracias

Image

Re: Colocar Excel/Word en Aplicacion

PostPosted: Wed Aug 31, 2016 3:40 pm
by cnavarro

Re: Colocar Excel/Word en Aplicacion

PostPosted: Wed Aug 31, 2016 4:44 pm
by MGA
Sr. Cristobal, obrigado!