Programación de un msgbox en openoffice

Resuelto
Didier61 Mensajes publicados 7 Estado Miembro -  
Didier61 Mensajes publicados 7 Estado Miembro -
<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. lami20j Mensajes publicados 21506 Fecha de registro   Estado Moderador, Colaborador de seguridad Última intervención   3 571
     
    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
  2. lami20j Mensajes publicados 21506 Fecha de registro   Estado Moderador, Colaborador de seguridad Última intervención   3 571
     
    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
  3. Didier61 Mensajes publicados 7 Estado Miembro 5
     
    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
  4. Didier61 Mensajes publicados 7 Estado Miembro 5
     
    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
  5. -pyer
     
    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. Didier61 Mensajes publicados 7 Estado Miembro 5
       
      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