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

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