Programación de un msgbox en openoffice

Resuelto
<ccm>hola a todos
Me estoy lanzando a los macos bajo OOo 2.0.4 pero soy principiante. En Calc, en la primera hoja he colocado algunos botones que me permiten mostrar una de las diez otras hojas y, una vez en la hoja deseada, tengo varios botones que me permiten imprimir una selección. No encuentro las soluciones para los siguientes problemas:
1) El grabador tiene en cuenta en la macro el número de la hoja para hacerla aparecer, pero me gustaría usar el nombre de la hoja.

2) No consigo insertar un msgbox con dos botones ok y cancelar para hacer una pregunta y confirmar la impresión o cancelarla.
gracias por su ayuda
Didier
Configuración: Windows Xp - OOo 2.0.4

5 respuestas

  1. Moderador
    Hola,

    aquí está para msgbox
    REM ***** BASIC ***** Sub Main dim repMsgBox as String '0 - solo ok '1 - ok + cancelar '2 - interrumpir + reintentar + cancelar '3 - sí + no + cancelar '4 - sí + no '5 - reintentar + cancelar '6 - ok 'los iconos ' 0 ninguno ' 16 mensaje crítico X ' 32 pregunta ? ' 48 advertencia ! ' 64 información i ' elección del botón por defecto ' 0 el primero ' 256 el 2° ' 512 el último ' el tipo de mensaje es la suma de 3 valores a elección 'Ej: el tipo 3 con pregunta y el 2° por defecto ' 3 + 32 + 256 = 291 repMsgBox=msgbox("Hola, soy MsgBox",291) ' aquí recupero el retorno de msgbox msgbox repMsgBox End Sub
    lami20j
    5
    1. Moderador
      Re,

      REM ***** BASIC ***** Sub Main ' el msgbox devuelve un valor en función del botón que utilizas ' 1 para ok ' 2 para cancelar ' tú tienes que descubrir el resto dim repMsgBox as String repMsgBox=msgbox("Hola, soy MsgBox",1) 'ahora vamos a utilizar el retorno del msgbox 'por lo tanto, en función del botón utilizado, ejecutamos algo if repMsgBox=1 then msgbox "Has hecho clic en OK" elseif repMsgBox=2 then msgbox "Has hecho clic en CANCELAR" end If End Sub
      Y en tu caso
      REM ***** BASIC ***** Sub Main ' el msgbox devuelve un valor en función del botón que utilizas ' 1 para ok ' 2 para cancelar ' tú tienes que descubrir el resto dim repMsgBox as String repMsgBox=msgbox("¿Quieres continuar?",1,"Didier61 Macro") 'ahora vamos a utilizar el retorno del msgbox 'por lo tanto, en función del botón utilizado, ejecutamos algo if repMsgBox=1 then oDocument = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") dim args1(0) as new com.sun.star.beans.PropertyValue args1(0).Name = "ToPoint" args1(0).Value = "$B$26:$R$43" dispatcher.executeDispatch(oDocument, ".uno:GoToCell", "", 0, args1()) dim args2(2) as new com.sun.star.beans.PropertyValue args2(0).Name = "Copies" args2(0).Value = 1 args2(1).Name = "Selection" args2(1).Value = true args2(2).Name = "Collate" args2(2).Value = false dispatcher.executeDispatch(oDocument, ".uno:Print", "", 0, args2()) elseif repMsgBox=2 then msgbox "La ejecución ha sido cancelada.",64,"Didier61 Macro" exit sub end If End Sub
      lami20j
      2
      1. Gracias lami20j por responder tan rápido, pero mi problema no está completamente resuelto. Este es el inicio de mi macro

        sub Imp1
        dim repMsgBox as string
        repMsgBox=msgbox("¿Desea imprimir este estado?",289)

        pero ¿cuáles son las funciones que deben seguir para que al hacer clic en el botón Cancelar se salga de la macro y si hago clic en Aceptar se continúe con mi macro a continuación?

        oDocument = ThisComponent.CurrentController.Frame
        dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
        dim args1(0) as new com.sun.star.beans.PropertyValue
        args1(0).Name = "ToPoint"
        args1(0).Value = "$B$26:$R$43"
        dispatcher.executeDispatch(oDocument, ".uno:GoToCell", "", 0, args1())
        dim args2(2) as new com.sun.star.beans.PropertyValue
        args2(0).Name = "Copies"
        args2(0).Value = 1
        args2(1).Name = "Selection"
        args2(1).Value = true
        args2(2).Name = "Collate"
        args2(2).Value = false
        dispatcher.executeDispatch(oDocument, ".uno:Print", "", 0, args2())
        End sub

        gracias
        0
        1. Gracias de nuevo a lami20j, funciona bien y la macro es la siguiente:

          sub Imp1
          dim repMsgBox as string
          repMsgBox=msgbox("texto deseado",suma de los 3 números de elección, "opcionalmente nombre del msgbox")
          if repMsgBox=1 then

          (texto de la macro que queremos que se ejecute o no)

          elseif repMsgBox=2 then
          exit sub
          end If
          end sub
          0
          1. Hola,
            me gustaría saber cómo programas los botones para navegar entre las diferentes hojas del libro. Estoy migrando de Lotus 123 a Calc y no encuentro esta funcionalidad.
            Gracias
            -pyer
            0
            1. Buenas tardes -pyer
              En una hoja de cálculo, coloca un botón para cada una de las hojas a las que deseas acceder y asocia cada botón a una macro como se indica a continuación:

              dim miDocumento As Object, lasHojas As Object, miHoja As Object, miCelda As Object

              Sub elección1 'la elección 1 corresponde al nombre de tu macro
              miDocumento = thisComponent
              lasHojas = miDocumento.Sheets
              miHoja = lasHojas.getByName("hoja1") 'entre comillas el nombre de la hoja que deseas obtener
              miCelda = miHoja.getCellRangeByName("D5") 'la dirección de la celda que quieres seleccionar eventualmente
              miDocumento.currentController.Select(miCelda)
              End Sub
              Didier61
              0