mensaje de error al cerrar archivo

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
arivas_2005
Mensajes: 162
Registrado: Mié Nov 16, 2011 6:01 pm

mensaje de error al cerrar archivo

Mensaje por arivas_2005 »

Saludos

Necesito eliminar el archivo de libreoffice en uso después de cerrarlo (entorno windows).
Para eso, por medio de una macro, creo un .bat desde libreoffice y luego se ejecuta con el comando shell, inmediatament antes de cerrarse dicho archivo
El problema es que aparece una ventanita con mensaje de error y si se tarda mucho en cerrarla, el archivo no se elimina por el bat.
Cómo puedo hacer para que no aparezca dicha ventanita de error

En el archivo adjunto, está lo fundamental del código para obserar el error y también la imagen de la ventanita de error que aparece "Error de ejecución de BASIC

Gracias!
Adjuntos
REVISION-DATOS-msgde-error.ods
(31.38 KiB) Descargado 220 veces
Libreoffice 4.7
Puppy slacko 6 y windows 7
Avatar de Usuario
PepeOooSevilla
Mensajes: 1480
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: mensaje de error al cerrar archivo

Mensaje por PepeOooSevilla »

Hola.

Para eliminar un archivo del disco, ¿has probado a utilizar la instrucción Kill (consulta la Ayuda de Basic) dentro de tu código y no crear un "bat"?

Saludos cordiales.
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
arivas_2005
Mensajes: 162
Registrado: Mié Nov 16, 2011 6:01 pm

Re: mensaje de error al cerrar archivo

Mensaje por arivas_2005 »

Saludos

el archivo a borrar es el mismo documento que tiene la macro. Es decir, programo un autoborrado(kill creo que no autoborra)

Hasta el momento sólo se me ocurrió crear un .bat por macro para autoborrar el archivo después que éste se cierra.

El documento se cierra y queda el .bat esperando unos segundos mientras se da el supuesto cierre total del documento. y luego hace el borrado.

El error supongo que se da porque el comando shell que ejecuta el .bat no queda concluso mientras se cierra el documento principal. Entonces esto es lo que no puedo resolver.
Libreoffice 4.7
Puppy slacko 6 y windows 7
mriosv
Mensajes: 2335
Registrado: Sab Dic 27, 2008 1:12 am
Ubicación: Galiza (España)

Re: mensaje de error al cerrar archivo

Mensaje por mriosv »

Creo que estás incurriendo en lo mismo, el 'bat' no puede borrarse a si mismo.
Quizás en lugar del segundo 'del' en el fichero de batería utilizar el 'kill'
Puedes usar "Subir adjunto" en Respuesta rápida - Editor Completo - Pestaña Subir adjunto
Apache OpenOffice 4, LibreOffice (Win10x64)
arivas_2005
Mensajes: 162
Registrado: Mié Nov 16, 2011 6:01 pm

Re: mensaje de error al cerrar archivo

Mensaje por arivas_2005 »

Saludos.

Gracias por las orientaciones.
Por el momento lo he resuelto así:
en el código de cierre del programa,

Código: Seleccionar todo

....
rutarchivo = sRuta1b & "borraexamen.bat"	
aaa=shell(rutarchivo,2)  '  <-- aqui se llama el bat para borrar el doc despues de cerrado
Thiscomponent.store '<-- he supuesto que el error  es por el temporal del documento abierto
' ya que al no guardarlo, al abrir nuevamente LOffice, aparece la ventana de recuperación de archivo y
'   se vuelve molesto.  En todo caso, el archivo siempre se elimina
wait 150
Thiscomponent.dispose()
Thiscomponent.close("False")
en el .bat agregué las líneas
Print #1, "@ echo off"
Print #1, "timeout /t 5"
Print #1, "taskkill /F /IM soffice.bin" ' <--- esta linea agregada
Print #1, "taskkill /F /IM soffice.exe" '<--- esta linea agregada
Print #1, "timeout /t 3"
Print #1, "del /f /q " & archivoborra ' <- el documento recien cerrado
Print #1, "timeout /t 1"
Print #1, "del " & sRuta1b & "borraexamen.bat" ' <- el bat que borra y se autoborra
Print #1, "exit /b 0"
Por el momento ya autocierro el documento y la ventanita de error que siempre aparece, pero de un modo forzado
Me gustaría tener la solución de tal modo que dicho cuadrito con el mensaje de error no aparezca

Así que aún no lo declararé como solucionado, ya que el mensaje de error siempre aparece. Agradeceré mas aportes
Adjunto el archivo con las modificaciones.
P.D. Los bat se pueden autoborrar, desconozco las propiedades y detalles de como funcionan pero lo que he comprobado es que si se autoborran

Gracias nuevamente
Adjuntos
REVISION-DATOS-msgde-sin-error-provisional.ods
(32.24 KiB) Descargado 198 veces
Libreoffice 4.7
Puppy slacko 6 y windows 7
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: mensaje de error al cerrar archivo

Mensaje por fornelasa »

No sé si habré entendido bien porque según yo la tarea es facil de hacer, por ejemplo:
arivas_2005 escribió:el archivo a borrar es el mismo documento que tiene la macro.

Código: Seleccionar todo

Sub EliminarArchivoActual
oFile = ThisComponent.Location
ThisComponent.Close(False)
Kill oFile
End Sub
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
arivas_2005
Mensajes: 162
Registrado: Mié Nov 16, 2011 6:01 pm

Re: mensaje de error al cerrar archivo

Mensaje por arivas_2005 »

Saludos.
Gracias a la comunidad por el apoyo.
He experimentado la sugerencia del código precedente (... Kill oFile ... ) en LO 5.1.0.3 en Windows 7 y aparece el siguiente error: Error general Error general de Entrada/Salida. No se borra el archivo.

Nuevamente gracias.
Libreoffice 4.7
Puppy slacko 6 y windows 7
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: mensaje de error al cerrar archivo

Mensaje por fornelasa »

ummmm, si lo borra pero ..... he detectado que:
si la macro se ejecuta desde un control botón entonces si genera alerta, pero si se ejecuta de otro modo no hay problema.
al bajar este archivo primero guardemos-lo y despues abramos-lo.
Ejemplo:
Adjuntos
teBorraré.ods
Auto_eliminar_file
(10.31 KiB) Descargado 213 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
arivas_2005
Mensajes: 162
Registrado: Mié Nov 16, 2011 6:01 pm

Re: mensaje de error al cerrar archivo

Mensaje por arivas_2005 »

Saludos

Efectivamente. En el archivo que uso, el cierre se genera desde un botón de comando en un cuadro de diálogo.
Ojalá tuviera solución este problema.
El caso es que al abrir nuevamente cualquier documento, aparece la recuperación de documento, aunque no en todos los casos (algo que aún no he logrado deducir!).

Gracias.
Libreoffice 4.7
Puppy slacko 6 y windows 7
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: mensaje de error al cerrar archivo

Mensaje por fornelasa »

Parecería que pudiera ser así:

Código: Seleccionar todo

Sub Salir()
       dialogo.endexecute()   'Asumo que el botón "Borrar" está en un cuadro de dialogo ..... asumo que el archivo hasta este punto está salvado.
        oFile = ThisComponent.Location
     document = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dispatcher.executeDispatch(document, ".uno:EditDoc", "", 0, Array())
 ThisComponent.Close(False)
       Kill oFile
End Sub
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
arivas_2005
Mensajes: 162
Registrado: Mié Nov 16, 2011 6:01 pm

Re: mensaje de error al cerrar archivo

Mensaje por arivas_2005 »

Saludos

Mis sinceros agradecimientos ' fornelasa'
Debo contarle que al experimentar el código sugerido, aún persiste el aparecimiento del cuadro con el error "type:com.sun.starlang.disposeException"

Código: Seleccionar todo

dialogo.endexecute()   'Asumo que el botón "Borrar" está en un cuadro de dialogo ..... asumo que el archivo hasta este punto está salvado.
' Exactamente así se desarrolla el proceso.
...
... 
'  ojala podamos encontrar el código adecuado para evitar el aparecimiento de tal mensaje de error 
Nuevamente gracias.
exitos
Libreoffice 4.7
Puppy slacko 6 y windows 7
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: mensaje de error al cerrar archivo

Mensaje por fornelasa »

Si me guío por:
arivas_2005 escribió:Efectivamente. En el archivo que uso, el cierre se genera desde un botón de comando en un cuadro de diálogo.
arivas_2005 escribió:Necesito eliminar el archivo de libreoffice en uso después de cerrarlo (entorno windows).
arivas_2005 escribió:el archivo a borrar es el mismo documento que tiene la macro.
En ambos archivos de aqui abajo se realiza la tarea (que creo) solicitamos en base a los escritos de arriba.

Tu idea/archivo ( ..... sin error provisional) original tambien lo hace ..... solo agrega:
Ejemplo:

Código: Seleccionar todo

sub cerrar_cuadro_reporte_examen
On Error Resume Next
Saludos, Federico.
Adjuntos
TuArchivo.ods
Tu archivo
(31.31 KiB) Descargado 226 veces
Sugerencia.ods
Mi sugerencia
(31.29 KiB) Descargado 212 veces
Última edición por fornelasa el Lun Jun 13, 2016 4:23 pm, editado 3 veces en total.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: mensaje de error al cerrar archivo

Mensaje por mauricio »

creo, reitero el creo... es una muy mala idea autoborrar un archivo...
______________________________________________
"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
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: mensaje de error al cerrar archivo

Mensaje por fornelasa »

Si, coincido contigo mauricio pero en este caso, al cliente lo que pida ..... :mrgreen:
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
arivas_2005
Mensajes: 162
Registrado: Mié Nov 16, 2011 6:01 pm

Re: mensaje de error al cerrar archivo

Mensaje por arivas_2005 »

Saludos
Mis agradecimientos a la comunidad por su esmerada colaboración.
Debo contarles que no soy programador de oficio. Sin embargo me ha llamado mucho la atención del uso del antes Staroffice, luego OpenOffice y hoy libreoffice.
El proyecto en el que stoy es una colaboración con un grupo de docentes que necesitan una herramienta para realizar test en computadoras. Bueno, primero les convencí que usaran Libreoffice, pero se les presentó el problema que hacian mas de una vez el examen y me pidieron que les ayudara con ese problema.
Así que lo único que se me ocurrió es borrar el archivo del examen luego de terminado. En ese quid stoy y considero que he avanzado mucho con el apoyo de la comunidad

En cuanto a la última sugerencia, la experimentaré hoy por la noche. Gracias. ;)

Nuevamente mis agradecimientos y éxitos
Libreoffice 4.7
Puppy slacko 6 y windows 7
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: mensaje de error al cerrar archivo

Mensaje por fornelasa »

Curiosidad mia ..... ¿al final como quedó este asunto?
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
arivas_2005
Mensajes: 162
Registrado: Mié Nov 16, 2011 6:01 pm

Re: mensaje de error al cerrar archivo

Mensaje por arivas_2005 »

Hola Federico.

Después de mucho experimento, lo tengo así
a) Primero trunco las lineas que evitan el inicio con recuperación por medio de la modificación al archivo .xcu

Código: Seleccionar todo

	'C:\Users\Administrador\AppData\Roaming\LibreOffice\4\user
				totalregs1=0
				rutabasexcu="C:\Users\Administrador\AppData\Roaming\LibreOffice\4\user\"
			
			
			'	preparando el xcu principal copiado en user
			' limpia el personasett
				open  rutabasexcu & "reg0.xcu" for append as #1 ''filtrando linea PersonaSett registrymodifications
						open rutabasexcu & "registrymodifications.xcu" for input as #2
					 	do ' While Not EOF(2)
					 		if eof(2) then
					 			exit do
					 		end if		 		
							Line Input #2, mivariable							
								if instr( mivariable,"recovery")=0 then
									print #1,mivariable				
							   	endif		   
						loop until EOF(2)=-1		    
					close #2	
				close #1
		
b) se crea el .bat que hará todo el trabajo de borrar, matar proceso y sustituir el .xcu alterado antes

Código: Seleccionar todo

	wait 150
			Open rutarchivo For append As #1
				Print #1, "@ echo off"
				Print #1, "timeout /t 2"
				Print #1, "taskkill /F /IM soffice.bin"
				Print #1, "taskkill /F /IM soffice.exe"		
				Print #1, "copy /y " & rutabasexcu & "registrymodifications.xcu " & rutabasexcu & "registrymodifications_2.xcu "
				Print #1, "timeout /t 1"
				Print #1, "del  /f /q " & rutabasexcu & "registrymodifications.xcu"
				Print #1, "copy /y " & rutabasexcu & "reg0.xcu " & rutabasexcu & "registrymodifications.xcu"
				Print #1, "timeout /t 1"
				Print #1, "del  /f /q " & rutabasexcu & "reg0.xcu"
		        Print #1, "del  /f /q " & chr(34) & archivoborra & chr(34)
		        Print #1, "cls"       
		        Print #1, "del  /f /q " & archivoborra
				Print #1, "timeout /t 1"
		        Print #1, "del " & sRuta1b & "borraexamen.bat"
		        Print #1, "cls"
		    Close #1
En general, funciona.
a) llenan las respuestas asi en formato sencillo y se crea un txt solo con las respuestas
b) cuando llenan la última y finalizan el examen,
b.1) se hace la corrección al archivo .xcu para evitar el inicio con recuperacion y se crea el .bat
b.2) se cierra Lofice y se dispara el proceso .bat
... mas o menos eso.

El código se ve desordenado porque aún no tengo método para "programar", pues como cité antes, no soy programador de oficio, sino por las circunstancias en las que trabajo.

Si debo contar que la tal ventanita de error al cerrar Loffice después de disparar el .bat con 'shell' siempre sale...
En la última semana de Julio usarán nuevamente este formato para examinar, así que aún estoy pendiente de observar mas detalles de este medio-invento. El profesorado que lo usa esta contento porque les evita el uso de mucho papel y expresan que es mas facil la revision por la lectura.....etc etc...
Gracias por las ayudas
Exitos.
Libreoffice 4.7
Puppy slacko 6 y windows 7
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: mensaje de error al cerrar archivo

Mensaje por fornelasa »

Ok bien.
Me causa sorpresa el todavia leer esto:
arivas_2005 escribió:Si debo contar que la tal ventanita de error al cerrar Loffice después de disparar el .bat con 'shell' siempre sale...
En el archivo que subí llamado "TuArchivo.ods" se utliza totalmente tu codigo y a mi no me marca error de ningun tipo y tampoco me aparecen mensajes de alerta, el codigo hace exactamente lo que pedimos ..... está raro .....
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Responder