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. 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
    2. 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. 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