Macro presentación aleatoria para OpenOffice Impress

Macro presentación aleatoria para OpenOffice Impress

¿Necesitas que tu presentación Impress se muestre cada vez que la ejecutas con un orden de diapositivas distinto?

¿Y que ese orden sea aleatorio?

Esta macro te da una sencilla y fácil solución.

Además, te indicamos como integrar la macro en tu OpenOffice y asignarla a un botón en la barra de herramientas Presentación.

 

Código de la macro

Sub Presentacion_Aleatoria
    Dim i as Integer, x as Integer, nAleatorio as Integer
    Dim oDocumento as Object, oPaginas as Object, nContador as Integer
    Dim oPresentacionPersonalizada as Object, nContadorDiapos as Integer
    Dim oTmp as Object, oDiapoAleatoria as Object, oPrimeraPagina as Object
    Dim oControlActual as Object, oPresentacion as Object

    oDocumento = ThisComponent
    oPaginas = oDocumento.getDrawPages
    nContador = oPaginas.Count

    Dim aListaActual(nContador-1) as Integer
    Dim aListaAleatoria(nContador-1) as Integer
    Dim aListaTemp(nContador-1) as Integer

    For i = 0 to nContador-1
        aListaActual(i) = i
    Next i

    For x = nContador-1 to 0 Step -1
        Redim aListaTemp(x)
        nAleatorio = Int(Rnd*(x+1))
        aListaAleatoria(nContador-1-x) = aListaActual(nAleatorio)
        If x > 0 then
            If nAleatorio > 0 then
                For i = 0 to nAleatorio - 1
                    aListaTemp(i) = aListaActual(i)
                Next i
            End If
            If nAleatorio < x then
                For i = nAleatorio + 1 to x
                    aListaTemp(i-1) = aListaActual(i)
                Next i
            End If
            Redim aListaActual(x-1)
            aListaActual() = aListaTemp()
        End If
    Next x

    oPresentacionPersonalizada = oDocumento.getCustomPresentations()
    If oPresentacionPersonalizada.hasByname("MiPresentacion") Then
        oTmp = oPresentacionPersonalizada.getByName("MiPresentacion")
        nContadorDiapos = oTmp.Count
        If nContadorDiapos > 0 then
            For x = 0 to nContadorDiapos -1
                oTmp.removeByIndex(0)
            Next x
        End If
    Else
        oTmp = oPresentacionPersonalizada.createInstance()
        oPresentacionPersonalizada.insertByName("MiPresentacion", oTmp)
        oTmp = oPresentacionPersonalizada.getByName("MiPresentacion")
    End If

    For x = 0 to nContador-1
        oDiapoAleatoria = oPaginas.getByIndex(aListaAleatoria(x))
        oTmp.insertByIndex(x, oDiapoAleatoria)
    Next x

    oPrimeraPagina = oPaginas.getByIndex(aListaAleatoria(0))
    oControlActual = oDocumento.currentController
    oControlActual.select(oPrimeraPagina)
    oPresentacion = oDocumento.Presentation
    oPresentacion.CustomShow = "MiPresentacion"
    oPresentacion.Start()
End Sub

En el código de la macro se ha seguido la siguiente nomenclatura:

  • Objetos: su nombre empieza por o (de Object)
  • Contadores: su nombre empieza por n (de Numeric)
  • Matrices: su nombre empieza por a (de Array)

Agregar una macro a OpenOffice

Para agregar esta macro a tu OpenOffice sigue los siguientes pasos:

  1. Selecciona y copia el código desde este artículo
  2. En OpenOffice selecciona desde el menú Herramientas > Macros > Organizar macros > OpenOffice.org Basic
  3. Selecciona Mis macros > Standard > Module1 y haz clic sobre el botón Editar
  4. Pega el código debajo de la declaración Sub Main / End Sub y cierra el editor de macros

Agregar una macro a una barra de herramientas en OpenOffice

Para agregar esta macro a tu barra de herramientas Presentación sigue los siguientes pasos:

  1. Desde el triángulo situado al final de la barra de herramientas Presentación selecciona Personalizar barra de herramientas...
  2. Haz clic sobre el último comando de la barra de herramientas (por defecto, Presentación)
  3. Haz clic sobre el botón Agregar...
  4. En la lista Categoría localiza y selecciona Macros de OpenOffice.org > Mis macros > Standard > Module1
  5. En la lista Comandos selecciona Presentación_Aleatoria y haz clic en Agregar y luego en Cerrar.
  6. Haz clic en el botón Modificar > Renombrar... y cambia el nombre a Aleatoria (o el que prefieras); haz clic sobre el botón Aceptar
  7. Haz clic sobre el botón Aceptar

Ya sólo queda que abras tu presentación y pruebes el nuevo botón.

Macro basada en un artículo del Foro Oficial de Apache OpenOffice en Español.

No hay reacciones, todavía


Form is loading...

Otros usuarios vieron...

  • Esta función devuelve la letra del NIF asociada a un número de DNI

    Function LetraNif(dni As Long) As String
    LetraNif = Mid("TRWAGMYFPDXBNJZSQVHLCKE", (dni Mod 23) + 1, 1)
    End Function
  • Calcular días laborables

    También se ha preguntado en varios foros el modo de calcular el próxima día laborable dada una fecha inicial y un plazo de días laborables, por ejemplo, para calcular hast…

  • Este procedimiento para ordenar matrices es, en la gran mayoría de casos, más rápido que el método de la burbuja.

    Para conocer más sobre estos métodos puedes consultar las sigui…

Patrocinado por SBS  Contacto • ©2026 by Salvador Domènech Chicote