Macros para Apache OpenOffice Impress
Estamos editando esta página, y su contenido no está completo Seguimos agregando nuevas macros Disculpe las molestias |
Trabajando con presentaciones
Acceder a la presentación actual
Devuelve un objeto con la presentación actualmente abierta.
Function Presentacion() As Object '-------------------------------------------------------------------------------------------- Presentacion = ThisComponent End Function
Abrir una presentación existente
Abre el documento indicado en cRuta; debe contener la ruta y el nombre del documento. Por ejemplo C:\User\Docs\Informe-ventas.odp
Opcionalmente se le puede pasar un array aOpciones() de tipo com.sun.star.bean.PropertyValue, con las opciones deseadas para abrir el documento.
Function PresentacionAbrir( cRuta As String, Optional aOpciones() ) As Object '-------------------------------------------------------------------------------------------- cRuta = ConvertToURL( cRuta ) If IsMissing( aOpciones ) Then aOpciones = Array() PresentacionAbrir = StarDesktop.LoadComponentFromURL( cRuta, "_blank", 0, aOpciones() ) End Function
Ejemplos:
- Abrir una presentación Impress existente
Dim miPresentacion As Object miPresentacion = PresentacionAbrir "C:\miPresentacionDeImpress.odp"
- Abrir una presentación Impress pero que no sea visible (oculto):
Dim miPresentacion As Object, aOpc(1) As New com.sun.star.bean.PropertyValue aOpc(0).Name = "Hidden" aOpc(0).Value = TRUE miPresentacion = PresentacionAbrir "C:\miPresentacionDeImpress.odp", aOpc()
Para conocer más propiedades al abrir un documento, ver Service MediaDescriptor.
Para conocer más opciones de filtro, ver Propiedad FilterOptions.
Abrir una presentación con macros existente
Abre una presentación con macros activadas indicado en cRuta; debe contener la ruta y el nombre del documento. Por ejemplo C:\User\Docs\Informe-ventas.odp
Function PresentacionConMacrosAbrir( cRuta As String ) As Object '-------------------------------------------------------------------------------------------- Dim aOpc(0) As New "com.sun.star.beans.PropertyValue" aOpc(0).Name = "MacroExecutionMode" aOpc(0).Value = 4 PresentacionConMacrosAbrir = PresentacionAbrir( cRuta, aOpc() ) End Function
Verifica si el documento es una presentación de Impress
Devuelve Verdadero si el objeto pasado como argumento es una presentación de Impress.
Function DocEsPresentacionImpress( oDoc As Object ) As Boolean '-------------------------------------------------------------------------------------------- DocEsPresentacionImpress = oDoc.SupportsService( "com.sun.star.presentation.PresentationDocument" ) End Function
Cambia el modo de trabajo en Impress
Establece el modo de trabajo de la presentación pasada como argumento.
El modo de trabajo se puede establecer de alguna de estas formas:
- Por su nombre en castellano: Normal, Esquema, Notas, Folleto, Clasificador
- Por su nombre en inglés: Drawing, Outline, Notes, Handout, Sorter
- Por su código numérico: Normal = 0, Esquema = 2, Notas = 3, Folleto = 4, Clasificador = 1
Por defecto, activa el modo Normal
Sub PresentacionCambiarModo( oPresentacion As Object, xModo ) '-------------------------------------------------------------------------------------------- Dim oDispatch As Object, aModos() As String, nModo As Integer Select Case LCase( xModo ) Case "normal", "drawing", 0 : nModo = 0 Case "esquema", "outline", 2 : nModo = 2 Case "notas", "notes", 3 : nModo = 3 Case "folleto", "handout", 4 : nModo = 4 Case "clasificador", "sorter", 1 : nModo = 1 End Select ' normal, clasificador, esquema, notas, folleto aModos() = Array( ".uno:DrawingMode", ".uno:DiaMode", ".uno:OutlineMode", ".uno:NotesMode", ".uno:HandoutMode" ) oDispatch = CreateUNOService( "com.sun.star.frame.DispatchHelper" ) oDispatch.ExecuteDispatch( oPresentacion.CurrentController.Frame, aModos( nModo ), "", 0, Array() ) End Sub
Trabajando con diapositivas
Número de diapositivas
Devuelve el número de diapositivas que contiene la presentación pasada como argumento.
Function DiapositivasNumero( oPresentacion As Object ) As Long '-------------------------------------------------------------------------------------------- DiapositivasNumero = oPresentacion.DrawPages.Count() End Function
Diapositiva activa
Devuelve un objeto con la diapositiva activa de la presentación que se pasa como argumento.
Function DiapositivaActiva( oPresentacion As Object ) As Object '-------------------------------------------------------------------------------------------- DiapositivaActiva = oPresentacion.CurrentController.CurrentPage End Function
Diapositiva por índice
Devuelve un objeto con la diapositiva solicitada por su índice1 de la presentación pasada como argumento.
Function Diapositiva( oPresentacion As Object, nIndice As Long ) As Object '-------------------------------------------------------------------------------------------- Diapositiva = oPresentacion.DrawPages( nIndice ) End Function
Diapositiva por posición
Devuelve un objeto con la diapositiva solicitada por su posición3 de la presentación pasada como argumento.
Function DiapositivaPorPosicion( oPresentacion As Object, nPosicion As Long ) As Object '-------------------------------------------------------------------------------------------- DiapositivaPorPosicion = oPresentacion.DrawPages( nPosicion - 1 ) End Function
Diapositiva por nombre
Devuelve un objeto con la diapositiva solicitada por su nombre2 de la presentación pasada como argumento.
El nombre puede ser por ejemplo page 3 si el nombre no se ha personalizado, Gráfica de barras Enero si es el nombre personalizado que se le asignó.
Function DiapositivaPorNombre( oPresentacion As Object, cNombre As String ) As Object '-------------------------------------------------------------------------------------------- DiapositivaPorNombre = oPresentacion.DrawPages.GetByName( cNombre ) End Function
Recorrer todas las diapositivas
Recorre todas las diapositivas de la presentación pasada como argumento. Este procedimiento sólo se incluye como ejemplo de cómo recorrer todas las diapositivas de una presentación.
Sub DiapositivasRecorrer( oPresentacion As Object ) '-------------------------------------------------------------------------------------------- Dim oDiapositiva As Object, oDiapositivas As Object, n As Long oDiapositivas = oPresentacion.DrawPages For n=0 To oDiapositivas.Count()-1 oDiapositiva = Diapositiva( oPresentacion, n ) ' aquí tu código MsgBox "Diapositiva Index=" & n & " : Name=" & _ oDiapositiva.Name & " ; linkDisplayName=" & oDiapositiva.linkDisplayName Next End Sub
Insertar nueva diapositiva
Inserta una nueva diapositiva en la presentación pasada como argumento. Devuelve un objeto con la nueva diapositiva insertada.
Si no se especifica nTrasIndice se inserta tras la última diapositiva.
Si se especifica, será el índice1 de la diapositiva tras la que deseamos insertar la nueva, teniendo en cuenta que:
- La primera diapositiva tiene índice 0
- No se puede insertar una nueva diapositiva antes de la primera
- Cualquier valor menor que 0 es equivalente a decir que se inserte tras la última diapositiva
Opcionalmente se puede especificar un nombre2 para la nueva diapositiva, teniendo en cuenta que:
- Si el nombre ya existe, se añadirá un signo + al nombre tantas veces como sea necesario hasta obtener un nombre único.
Function DiapositivaNueva( oPresentacion As Object, _ Optional nTrasIndice As Long, Optional cNombre As String ) As Object '-------------------------------------------------------------------------------------------- If IsMissing( nTrasIndice ) Then nTrasIndice = -1 DiapositivaNueva = oPresentacion.DrawPages.insertNewByIndex( nTrasIndice ) If Not IsMissing( cNombre ) Then PresentacionValidaNombreDiapositiva( oPresentacion, cNombre ) DiapositivaNueva.Name = cNombre EndIf End Function
Procedimiento auxiliar para validar nombre de diapositiva
Este procedimiento verifica que el nombre pasado como argumento es único en la presentación; si no lo es, añadirá un el argumento cSep al nombre tantas veces como sea necesario hasta obtener un nombre único.
Si se omite cSep o es una cadena vacía, se utilizará el signo + en su lugar
Sub PresentacionValidaNombreDiapositiva( oPresentacion As Object, ByRef cNombre As String, _ Optional cSep As String ) '-------------------------------------------------------------------------------------------- If IsMissing( cSep ) Or cSep = "" Then cSep = "+" While oPresentacion.DrawPages.HasByName( cNombre ) cNombre = cNombre & cSep Wend End Sub
Borrar diapositiva por índice
Elimina la diapositiva por su índice1 en la presentación pasada como argumento.
Sub DiapositivaBorra( oPresentacion As Object, nIndice As Long ) '-------------------------------------------------------------------------------------------- Dim oDiapositiva As Object oDiapositiva = oPresentacion.DrawPages( nIndice ) oPresentacion.DrawPages.remove( oDiapositiva ) End Sub
Borrar diapositiva por posición
Elimina la diapositiva por su posición3 en la presentación pasada como argumento.
Sub DiapositivaBorraPorPosicion( oPresentacion As Object, nPosicion As Long ) '-------------------------------------------------------------------------------------------- DiapositivaBorra( oPresentacion, nPosicion - 1 ) End Sub
Borrar diapositiva por nombre
Elimina la diapositiva por su nombre2 en la presentación pasada como argumento.
Sub DiapositivaBorraPorNombre( oPresentacion As Object, cNombre As String ) '-------------------------------------------------------------------------------------------- Dim oDiapositiva As Object oDiapositiva = DiapositivaPorNombre( oPresentacion, cNombre ) oPresentacion.DrawPages.remove( oDiapositiva ) End Sub
Seleccionar diapositiva por índice
Selecciona la diapositiva por su índice1 en la presentación pasada como argumento.
Sub DiapositivaSeleccionar( oPresentacion As Object, nIndice As Long ) '-------------------------------------------------------------------------------------------- Dim oDiapositiva As Object oDiapositiva = oPresentacion.DrawPages( nIndice ) oPresentacion.CurrentController.setCurrentPage( oDiapositiva ) End Sub
Seleccionar diapositiva por posición
Selecciona la diapositiva por su posición3 en la presentación pasada como argumento.
Sub DiapositivaSeleccionarPorPosicion( oPresentacion As Object, nPosicion As Long ) '-------------------------------------------------------------------------------------------- DiapositivaSeleccionar( oPresentacion, nPosicion - 1 ) End Sub
Seleccionar diapositiva por nombre
Selecciona la diapositiva por su nombre2 en la presentación pasada como argumento.
Sub DiapositivaSeleccionarPorNombre( oPresentacion As Object, cNombre As String ) '-------------------------------------------------------------------------------------------- Dim oDiapositiva As Object oDiapositiva = DiapositivaPorNombre( oPresentacion, cNombre ) oPresentacion.CurrentController.setCurrentPage( oDiapositiva ) End Sub
Duplicar diapositiva por índice
Duplica la diapositiva identificada por su índice1 nActual en la presentación pasada como argumento. La nueva diapositiva se situará justo a continuación de la identificada.
Opcionalmente se puede especificar un nombre2 para la nueva diapositiva, teniendo en cuenta que:
- Si el nombre ya existe, se añadirá un signo + al nombre tantas veces como sea necesario hasta obtener un nombre único.
Sub DiapositivaDuplica( oPresentacion As Object, nIndice As Long, Optional cNombre As String ) '-------------------------------------------------------------------------------------------- Dim oDiapositiva As Object, oNueva As Object oDiapositiva = oPresentacion.DrawPages( nIndice ) oNueva = oPresentacion.duplicate( oDiapositiva ) If Not IsMissing( cNombre ) Then PresentacionValidaNombreDiapositiva( oPresentacion, cNombre ) oNueva.Name = cNombre EndIf End Sub
Duplicar diapositiva por posición
Duplica la diapositiva identificada por su posición3 nPosicion en la presentación pasada como argumento. La nueva diapositiva se situará justo a continuación de la identificada.
Opcionalmente se puede especificar un nombre2 para la nueva diapositiva, teniendo en cuenta que:
- Si el nombre ya existe, se añadirá un signo + al nombre tantas veces como sea necesario hasta obtener un nombre único.
Sub DiapositivaDuplicaPorPosicion( oPresentacion As Object, nPosicion As Long, Optional cNombre As String ) '-------------------------------------------------------------------------------------------- DiapositivaDuplica( oPresentacion, nPosicion - 1, cNombre ) End Sub
Copiar diapositiva por índice
Copia la diapositiva identificada por su índice1 nActual justo por delante de la diapositiva identificada por su índice nNuevo en la presentación pasada como argumento.
No se admite el valor 0 para el argumento nNuevo.
Sub DiapositivaCopia( oPresentacion As Object, nActual As Long, nNuevo As Long ) '-------------------------------------------------------------------------------------------- oDispatch = CreateUNOService( "com.sun.star.frame.DispatchHelper") If nNuevo = 0 Then ' msgbox "Esta opción no es posible" Beep ElseIf nNuevo > nActual Then DiapositivaSeleccionar oPresentacion, nActual oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, ".uno:Copy","", 0, Array()) DiapositivaSeleccionar oPresentacion, nNuevo-1 oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, ".uno:Paste", "", 0, Array()) DiapositivaSeleccionar oPresentacion, nNuevo ElseIf nNuevo < nActual Then DiapositivaSeleccionar oPresentacion, nActual oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, ".uno:Copy","", 0, Array()) DiapositivaSeleccionar oPresentacion, nNuevo-1 oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, ".uno:Paste", "", 0, Array()) DiapositivaSeleccionar oPresentacion, nNuevo EndIf End Sub
Copiar diapositiva por posición
Copia la diapositiva identificada por su posición3 nPosActual justo por delante de la diapositiva identificada por su posición nPosNueva en la presentación pasada como argumento.
No se admite el valor 1 para el argumento nPosNueva.
Sub DiapositivaCopiaPorPosicion( oPresentacion As Object, nPosActual As Long, nPosNueva As Long ) '-------------------------------------------------------------------------------------------- DiapositivaCopia( oPresentacion, nPosActual - 1, nPosNueva - 1 ) End Sub
Mover diapositiva por índice
Mueve la diapositiva identificada por su índice1 nActual justo por delante de la diapositiva identificada por su índice nNuevo en la presentación pasada como argumento.
No se admite el valor 0 para el argumento nActual ni para el argumento nNuevo.
Sub DiapositivaMueve( oPresentacion As Object, nActual As Long, nNuevo As Long ) '-------------------------------------------------------------------------------------------- oDispatch = CreateUNOService( "com.sun.star.frame.DispatchHelper") If nNuevo = 0 OR nActual = 0 Then ' msgbox "Esta opción no es posible" Beep ElseIf nNuevo > nActual Then DiapositivaSeleccionar oPresentacion, nActual oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, ".uno:Copy","", 0, Array()) DiapositivaSeleccionar oPresentacion, nNuevo oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, ".uno:Paste", "", 0, Array()) DiapositivaBorra( oPresentacion, nActual ) DiapositivaSeleccionar oPresentacion, nNuevo+1 ElseIf nNuevo < nActual Then DiapositivaSeleccionar oPresentacion, nActual oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, ".uno:Copy","", 0, Array()) DiapositivaSeleccionar oPresentacion, nNuevo-1 oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, ".uno:Paste", "", 0, Array()) DiapositivaBorra( oPresentacion, nActual+1 ) DiapositivaSeleccionar oPresentacion, nNuevo EndIf End Sub
Mover diapositiva por posición
Mueve la diapositiva identificada por su posición3 nPosActual justo por delante de la diapositiva identificada por su posición nPosNueva en la presentación pasada como argumento.
No se admite el valor 1 para el argumento nPosActual ni para el argumento nPosNueva.
Sub DiapositivaMuevePorPosicion( oPresentacion As Object, nPosActual As Long, nPosNueva As Long ) '-------------------------------------------------------------------------------------------- DiapositivaMueve( oPresentacion, nPosActual - 1, nPosNueva - 1 ) End Sub
Propiedades de las diapositivas
Índice de la diapositiva
Devuelve el el índice1 de la diapositiva pasada como argumento.
El índice en realidad no existe como propiedad, sino que la determinamos a partir de la propiedad de sólo lectura Number.
Function DiapositivaIndice( oDiapositiva As Object ) As String '-------------------------------------------------------------------------------------------- DiapositivaIndice = oDiapositiva.Number - 1 End Function
Posición de la diapositiva
Devuelve el la posición3 de la diapositiva pasada como argumento.
Esta propiedad es de sólo lectura.
Function DiapositivaPosicion( oDiapositiva As Object ) As String '-------------------------------------------------------------------------------------------- DiapositivaPosicion = oDiapositiva.Number End Function
Nombre de la diapositiva
Establece o devuelve4 el nombre2 de la diapositiva pasada como argumento.
Si se pasa el argumento cNombre se establece como nombre de la diapositiva.
- Si no se le pasa ningún valor, actúa como función y devuelve el nombre actual.
Function DiapositivaNombre( oDiapositiva As Object, Optional cNombre As String ) As String '-------------------------------------------------------------------------------------------- If Not IsMissing( cNombre ) Then oDiapositiva.Name = cNombre DiapositivaNombre = oDiapositiva.Name End Function
Nombre mostrado en la diapositiva
Devuelve el nombre2 que se muestra de la diapositiva pasada como argumento.
El nombre mostrado se corresponde con la propiedad linkDisplayName, de sólo lectura, que se localiza (se traduce) al idioma del documento, salvo que se haya establecido un nombre personalizado para la diapositiva.
Function DiapositivaNombreMostrado( oDiapositiva As Object ) As String '-------------------------------------------------------------------------------------------- DiapositivaNombreMostrado = oDiapositiva.linkDisplayName End Function