Macro para cerrar el archivo activo

¿Nuevo en Apache OpenOffice? ¿No sabe cómo comenzar o dónde hacer su pregunta? ¡Este es el lugar!
Reglas del Foro
Los moderadores podrían mover los temas creados aquí a un foro más apropiado.
Si usted publicó aquí y no encuentra el tema, puede buscar sus mensajes haciendo clic en la opción «Buscar sus mensajes» que se encuentra justo debajo de la cabecera de la página, junto al panel de control de usuario y al acceso a sus mensajes privados.
Responder
OsPer
Mensajes: 2
Registrado: Jue May 05, 2011 5:31 pm

Macro para cerrar el archivo activo

Mensaje por OsPer »

hola a todos, necesito el código para que una macro cierre el archivo activo (calc)
desde ya muchas Gracias
Oscar
OpenOffice 3.3 - S.O. Windows 7
OpenOffice 3.2 - Ubuntu 9.10
Néstor Londoño B.
Mensajes: 261
Registrado: Lun Dic 01, 2008 7:59 am
Ubicación: Pereira, Colombia

Re: Macro para cerrar el archivo activo

Mensaje por Néstor Londoño B. »

Saludos: En el Foro en inglés, http://www.oooforum.org/forum/viewtopic ... +doc+macro encontré que para cerrar un documento de OOo (Calc, writer, Draw, Impress y Base ) desde una macro se utiliza oDoc.Close(True)
Por lo que yo la ensayé con una lista de Calc y funcionó:
Sub Cierra
Doc = ThisComponent
Doc.Close(True)
End sub
Nota: Esta sub funciona en Mis macros, no se si trabaja como una macro adjunta al documento. Espero haberlo servido de ayuda,
Néstor
S,O. Ubuntu 15 AOO_4.0.1
OsPer
Mensajes: 2
Registrado: Jue May 05, 2011 5:31 pm

Re: Macro para cerrar el archivo activo

Mensaje por OsPer »

Gracias, funcionó pero genera un error y cierra todos los documentos activos y en caso de ser el unico activo, cierra tambien OOo



Néstor Londoño B. escribió:Saludos: En el Foro en inglés, http://www.oooforum.org/forum/viewtopic ... +doc+macro encontré que para cerrar un documento de OOo (Calc, writer, Draw, Impress y Base ) desde una macro se utiliza oDoc.Close(True)
Por lo que yo la ensayé con una lista de Calc y funcionó:
Sub Cierra
Doc = ThisComponent
Doc.Close(True)
End sub
Nota: Esta sub funciona en Mis macros, no se si trabaja como una macro adjunta al documento. Espero haberlo servido de ayuda,
OpenOffice 3.3 - S.O. Windows 7
OpenOffice 3.2 - Ubuntu 9.10
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro para cerrar el archivo activo

Mensaje por mauricio »

Hola...

Intenta con

Código: Seleccionar todo

ThisComponent.dispose
Toma en cuenta que no se guardará ningún cambio.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
Danielcm
Mensajes: 22
Registrado: Vie May 13, 2011 4:27 pm

Re: Macro para cerrar el archivo activo

Mensaje por Danielcm »

Que tal:

Referente a ThisComponent.dispose

Hay alguna instruccion para cerrar el documento cumpliendo cierto periodo de tiempo?

Es decir...El archivo se abre, pasan 20 segundos y el documento se cierre??

Gracias.
OpenOffice 3.1 en Windows Vista / NeoOffice 2.2.3 con MacOS 10.4 / OpenOffice 2.4 en Ubuntu 9.04
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Macro para cerrar el archivo activo

Mensaje por RMG »

Hola

La instrucción es Wait 20000 (un segundo por cada mil)

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
adsopenoffice
Mensajes: 2
Registrado: Mié Dic 28, 2011 1:06 pm

Re: Macro para cerrar el archivo activo

Mensaje por adsopenoffice »

Hola,
con vuestro pemiso entro en este hilo, pues parece escrito por mi.
Creo que tengo este mismo problema y no doy con una solución correcta.
Hacer que el archivo activo se cierre pasado un tiempo lo soluciono con un contador y un Do ...

Código: Seleccionar todo

Global TiempoTranscurrido as long
Global Comienzo as long

Sub AutoCierre
Dim oDocumento As Object
Dim oHojaActiva As Object
Dim oCeldaComienzo As Object
Dim oCeldaTiempoRestante As Object
Dim oCeldaTiempoCierre As Object

TiempoCierre = 50 'Valor por defecto
Comienzo = Timer 'Inicio de la aplicación
oDocumento = ThisComponent
oHojaActiva = ThisComponent.getCurrentController.getActiveSheet()

oCeldaComienzo = oHojaActiva.getCellRangeByName( "L1" )
oCeldaTiempoRestante = oHojaActiva.getCellRangeByName( "M1" )
oCeldaTiempoCierre = oHojaActiva.getCellRangeByName( "N1" )
'Para más comodidad, los tiempos se muestran y se toman de la hoja Calc
TiempoCierre = oCeldaTiempoCierre.getValue() 
oCeldaComienzo.setValue( Comienzo)
	
Do
'toma últimos tiempos y calcula el tiempo que ha estado contando
Ahora = Timer
TiempoTranscurrido = Ahora - oCeldaComienzo.getValue()
oCeldaTiempoRestante.setValue( TiempoCierre - TiempoTranscurrido )
Loop While (TiempoTranscurrido < TiempoCierre)

'mensaje de información
'a$ = "La aplicación se va cerrar" & Chr(13) & TiempoTranscurrido & " Seconds" & Chr(13) 
'MsgBox (a$,,"Demasiado tiempo transcurrido")
'Guardamos los cambios
oDocumento.store()
'Cerramos el archivo
oDocumento.close(True)

End Sub
 
(Puede ser que falle algo pues lo he redactado con editor y no está probado, pero la idea es esa)

Mi código es un poco más complicado pues tiene un botón para imprimir que además de imprimir pone el contador a 0.
La macro AutoCierre está enlazada al evento de Abrir Fichero del propio documento (Herramientas ->Personalizar)

El funcionamiento es correcto si el usuario no cierra la aplicación, sino, la macro sigue corriendo (Do ... Loop) y luego quiere cerrar el fichero, esto lanza un error. Este es mi problema.
He probado a buscar el fichero temporal (StrFileLocked = StrPath & ".~lock." & StrFile & "#") que crea OO cuando está abierto, pero este no deja de existir mientras está la macro corriendo.
He probado a crear una variable Booleana y vincularla a el evento de Cerrar Archivo y Aplicación para que en el caso de estar cerrado no intente guardarlo
He Intentado capturar el error con On Goto Error y aunque ya no sale el mensaje, sigue saltando la aplicación de OO de Recuparación y envío de Errorres.
Agradecería vuestros consejos.
Un saludo
OpenOffice 3.1 con Windows XP
adsopenoffice
Mensajes: 2
Registrado: Mié Dic 28, 2011 1:06 pm

Re: Macro para cerrar el archivo activo

Mensaje por adsopenoffice »

Buenas,
debo entender que mi problema no tiene solución o que no la conocéis.
Si algún día doy con ella espero acordarme de colocarla aquí.
Un saludo
OpenOffice 3.1 con Windows XP
fizgoman
Mensajes: 1
Registrado: Mar Jun 12, 2012 8:35 am

Re: Macro para cerrar el archivo activo

Mensaje por fizgoman »

No se si te servirá de ayuda.
Ahora estoy usando más bien el LibreOffice, por lo que no se si te funcionara en Ooo.
Las sentencias para cerrar el documento sin provocarme el error han sido:

Código: Seleccionar todo

document   = ThisComponent.CurrentController.Frame
document.close(true)
Si te das cuenta, lo único que he cambiado ha sido la asignación al
document
Al menos a mi me funciona...
OpenOffice 3 en Windows 7
Responder