Quantcast
Channel: SCN : All Content - PowerBuilder Developer Center
Viewing all articles
Browse latest Browse all 2935

Como Usar Office Desde PowerBuilder

$
0
0

Desde PowerBuilder Podemos trabajar con documentos de office de dos maneras. Con interacción directa del usuario o sin ella.

Para tener interacción directa del usuario con el documento de office utilizamos un control ole sobre una ventana donde se puede vincular o incrustar un documento.Para trabajar un documento de office sin tener interacción directa del usuario podemos utilizar OLE o DDE

 

COMO FUNCIONA

 

OLE y DDE le permiten realizar acciones similares. Ambos permiten enviar comandos a otra aplicación, realizar acciones en dicha aplicación, y devolver los datos a su aplicación PowerBuilder. Hay, sin embargo, algunas diferencias fundamentales entre OLE y DDE. En las operaciones de OLE, el control del programa está realmente transferido temporalmente al otro programa (ej: Microsoft Excel con el propósito de manipular los datos de la hoja). Con DDE, las operaciones se producen cuando PowerBuilder envía una orden a Microsoft Excel para iniciar la comunicación entre las dos aplicaciones. PowerBuilder, sin embargo, siempre tiene el control del programa.

 

Otra diferencia, que es una ventaja de OLE, OLE es el que inicia automáticamente la aplicación de objetos cuando el control del programa se transfiere a la aplicación de objeto. Cuando utiliza DDE, usted debe comprobar que la aplicación que va a utilizar (el servidor DDE) se ha iniciado, y ponerlo en marcha si es necesario.

 

Además, con los datos de OLE siempre se muestra en una ventana dependiente o independiente tal y como aparece en la aplicación que creó el objeto. Por ejemplo, si la solicitud es objeto de Microsoft Excel, una ventana de objeto dependiente o independiente muestra los datos de la hoja de trabajo de la aplicación PowerBuilder (la aplicación contenedora) tal como aparece en el propio Microsoft Excel. DDE no le permiten ver la hoja de trabajo que aparece en la solicitud.

 

DDE (Dynamic Data Exchange )

 

 

Para utilizar DDE, el proceso requiere que por lo menos dos aplicaciones de estar involucrado. La aplicación que solicita datos o envía comandos ejecutables se llama el cliente, mientras que la aplicación que se ejecuta el comando solicitado o devuelve los datos solicitados se llama el servidor. Dependiendo de cómo se implementa el DDE, una aplicación puede ser capaz de actuar tanto como el cliente y un servidor. PowerBuilder ha sido desarrollado para apoyar DDE para ambos

Ejemplo

 

long handle

string s_regiondata[3]

handle = OpenChannel("Excel", "REGION.XLS",Handle(w_ddewin))

GetRemote("R1C2", s_regiondata[1], handle, Handle(w_ddewin))

GetRemote("R1C3", s_regiondata[2], handle, Handle(w_ddewin))

GetRemote("R1C4", s_regiondata[3], handle, Handle(w_ddewin))

CloseChannel(handle, Handle(w_ddewin))

 

AUTOMATIZACIONES CON OLE

 

myoleobject = CREATE oleobject

rc = myoleobject.ConnectToNewObject ( "Excel.Application" )

 

Como Abrir Documentos de Office

Aplicacion

Objeto Ole

Abreviado

Excel

Microsoft.Office.Interop.Excel

Excel.Application

Word

Microsoft.Office.Interop.Word

Word.Application

PowerPoint

Microsoft.Office.Interop.PowerPoint

PowerPoint.Application

Outlook

Microsoft.Office.Interop.Outlook

Outlook.Application

Infopath

Microsoft.Office.Infopath


Visio

Microsoft.Office.Interop.Visio


Project

Microsoft.Office.Interop.MSProject


Access

Microsoft.Office.Interop.Access

Access.Application

 

EJEMPLO

 

 

oleobject            myoleobject

integer                 rc, i, count, j, colcount

string                    mydata, colname, colnames

 

myoleobject = CREATE oleobject

rc = myoleobject.ConnectToNewObject ( "Excel.Application" )

IF rc <> 0 THEN

                MessageBox ( "Error", String ( rc ) )

                Return

END IF

 

try

                myoleobject.Application.Visible = TRUE  //  objeto Application  ver http://msdn.microsoft.com/en-us/library/dd787731(v=office.12).aspx

                myoleobject.Workbooks.Add()  // objeto Workbooks http://msdn.microsoft.com/en-us/library/bb259439(v=office.12).aspx

               // Propiedad ActiveWorkbook del objeto aplication (retorma un workbook) http://msdn.microsoft.com/en-us/library/bb220820(v=office.12).aspx

                count = myoleobject.ActiveWorkbook.Sheets.Count

 

                for i = 1 to count

 

                               colcount = Integer ( dw_1.object.DataWindow.column.count )

                               FOR j = 1 TO colcount

                                               colname = dw_1.Describe ( "#" + String ( j ) + ".Name" )

                                               CHOOSE CASE j

                                                               CASE 1

                                                                              colnames = colname

                                                               CASE ELSE

                                                                              colnames = colnames + '~t' + colname

                                               END CHOOSE

                               NEXT

                               colnames = colnames + "~r~n"

                               mydata = dw_1.Object.DataWindow.Data

                               ClipBoard ( colnames + mydata )

                               myoleobject.ActiveWorkbook.Sheets(i).Paste()

                next

                myoleobject.DisconnectObject()

catch ( exception e )

                MessageBox ( "Error", e.GetMessage() )

finally

                Destroy myoleobject

end try

 

 

 

 

REFERENCIAS

 

Visual Basic for Applications Language Reference

http://msdn.microsoft.com/en-us/library/ee441138.aspx

 

 

Office client development

http://msdn.microsoft.com/en-us/library/bb726434(v=office.12).aspx

 

 

Excel Object Model Reference

http://msdn.microsoft.com/en-us/library/bb149081(v=office.12).aspx

 

 

Word Object Model Reference

http://msdn.microsoft.com/en-us/library/bb244515(v=office.12).aspx

 


Viewing all articles
Browse latest Browse all 2935

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>