[RESUELTO] Valor de una constante mediante un diálogo.

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

[RESUELTO] Valor de una constante mediante un diálogo.

Notapor Chelo2 » Mié Ago 12, 2015 3:42 pm

Hola amigos:

Como indiqué en un hilo anterior, he armado una plantilla de writer, la cual luego de cargar una serie de datos exporto como archivo .pdf en una ruta especificada en el valor de una constante que se encuentra en el Módulo 1.

El tema es que si bien generalmente la ruta donde se guarda el archivo es la misma, podría ser que hubiera que cambiarla y esto implicaría que habría que ingresar al código para cambiar dicha ruta.

Mi idea fue que a través de un botón que llama a un cuadro de diálogo pueda cambiar el valor de esa constante y cambiarla desde allí, la cual quedaría cargada esa información hasta un nuevo cambio. Pero la prueba no funcionó ya que me dice que no es posible realizar esa modificación.

La consulta es ¿Tengo alguna otra posibilidad de cambiar la ruta donde almacenar los sucesivos documentos que voy creando, sin necesidad de hacerlo desde el código???

Si no encontraba solución se me había ocurrido de registrarlo en un campo de usuario invisible para la impresión, y cambiarlo cuando haga falta desde el diálogo, pero me gustaria que no se viera desde la imagen de trabajo.

Desde ya muchas gracias a cualquier sugerencia que pudieran darme.

Un saludo desde Buenos Aires, Argentina.

Chelo2
Última edición por Chelo2 el Vie Ago 14, 2015 4:42 pm, editado 1 vez en total
OpenOffice 4.1.3 en Windows 7
Chelo2
 
Mensajes: 100
Registrado: Mié Ago 14, 2013 4:25 am
Ubicación: Lomas de Zamora, Buenos Aires, Argentina

Re: Valor de una constante mediante un diálogo.

Notapor fornelasa » Mié Ago 12, 2015 5:01 pm

Está muy raro lo que solicitas, de entrada parece facil de hacer, a grandes rasgos con lo explicado previamente debería bastar con algo similar a:
Código: Seleccionar todo   Expandir vistaContraer vista
Sub Main
  ruta = InputBox("Teclee la ruta en donde se guardará el archivo", "Ruta Archivo")
  MsgBox "Has elegido " & ruta
End Sub

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!
Avatar de Usuario
fornelasa
 
Mensajes: 3223
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Valor de una constante mediante un diálogo.

Notapor mauricio » Mié Ago 12, 2015 5:16 pm

Siempre puedes usar un simple archivo de texto para guardar este valor o cualquier otro necesario, se me ocurre también que puedes usar el registro de OpenOffice para esto, con una extensión es simple, pero no se si estos valores puedan establecer desde una simple macro, hago unas pruebas y te cuento...
______________________________________________
"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
mauricio
 
Mensajes: 5877
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Valor de una constante mediante un diálogo.

Notapor Chelo2 » Mié Ago 12, 2015 5:43 pm

Efectivamente Fede eso funcionaría, pero me obligaría a cargar la ruta cada vez que se usa y no es la idea.

Siempre va a ser una misma ruta, por eso lo cargaba en una Constante, para que cada vez que se abra y cierre el archivo la información no se pierda. Y muy excepcionalmente debería cambiarse, pero como los usuarios de la plantilla no tendrían conocimiento para modificar el código, o menos que los mios.. jeje, es que queria que tuvieran la oportunidad de que en caso de necesitarlo pudieran cambiarlo de manera sencilla.

De haberse tratado de Calc, yo guardaba la ruta en un celda de una hoja oculta, la macro leería la ruta de esa celda y podría modificarlo a través del diálogo sin problemas, pero tratándose de Writer, y siendo mis primeras pruebas con macros no se me ocurría mucho como hacerlo.

Mauricio, con respecto a lo que me comentás de hacerlo con un archivo de texto, si tenés alguna sugerencia de como sería te lo agradecería, así sigo probando. Estaria bueno.

Si lo prefieren envío el archivo del cual les hablo. Sus datos son ficticios. Sólo no marquen en el diálogo la casilla de verificación conectar a la base para que no les de error.

Un saludo.

Chelo2
OpenOffice 4.1.3 en Windows 7
Chelo2
 
Mensajes: 100
Registrado: Mié Ago 14, 2013 4:25 am
Ubicación: Lomas de Zamora, Buenos Aires, Argentina

Re: Valor de una constante mediante un diálogo.

Notapor mauricio » Mié Ago 12, 2015 5:58 pm

Chelo2 escribió:Si lo prefieren envío el archivo del cual les hablo. Sus datos son ficticios. Sólo no marquen en el diálogo la casilla de verificación conectar a la base para que no les de error.


Si, siempre es bueno probar en el archivo del usuario...

Deberías validar este error...

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
mauricio
 
Mensajes: 5877
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Valor de una constante mediante un diálogo.

Notapor Chelo2 » Mié Ago 12, 2015 6:19 pm

Perdón. No me di cuenta que el archivo no se había adjuntado. Ahí va.

Chelo2
Adjuntos
Nota Interna Tipo4.ott.7z
(30.6 KiB) 30 veces
OpenOffice 4.1.3 en Windows 7
Chelo2
 
Mensajes: 100
Registrado: Mié Ago 14, 2013 4:25 am
Ubicación: Lomas de Zamora, Buenos Aires, Argentina

Re: Valor de una constante mediante un diálogo.

Notapor fornelasa » Mié Ago 12, 2015 6:48 pm

Chelo2 escribió:Efectivamente Fede eso funcionaría, pero me obligaría a cargar la ruta cada vez que se usa y no es la idea.

No necesariamente, en alguna parte de tu diálogo podríamos agregar un boton de opción que diga "Cambiar Ruta" y solo cuando se pincha ese botón se podría cambiar la ruta.
Si tengo una ruta fija de archivo y en alguna ocasión necesito cambiarla entonces en algun punto del codigo debo decirle en donde ¿o no?

Digo ..... no es lo ideal pero sería lo mas rapido de hacer por el momento

Saludos, Federrico.
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
fornelasa
 
Mensajes: 3223
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Valor de una constante mediante un diálogo.

Notapor Chelo2 » Mié Ago 12, 2015 7:30 pm

Pero justamente es lo que quiero hacer. En mi archivo la ruta predeterminada está almacenada en "Global Const Ruta_Archivo As String = "\\Ws34400009\d\ARCHIVOS_SER" que está en el módulo 1.

Si quiero cambiarla mediante un dialogo. En mi archivo ´hay un botón llamado "Modificación de parámetros", que al abrise me lee la ruta de la constante que menciono y la muestra en el cuadro un texto para editarla. Luego si la modifico la quiero actualizar, pero no me la deja almacenar en esa Constante que menciono. En el archivo que mandé asignado al botón "Cargar Ruta" :
Sub Guarda_Ruta
oControl = oDialogo.Model.TF_1.Text
'Ruta_Archivo = oControl.Text
End Sub

desafecté con un apostrofe el reglón que supuestamene cargaba el valor en "Ruta_Archivo" porque me daba error.

No entiendo en el ejemplo que me das donde almacenaría el cambio, porque si lo pongo en una variable común, cuando se cierra el archivo se borra y ya no quedaría ruta alguna.

La otra que se me está ocurriendo ahora que estoy escribiendo es con una variable donde cargaría la ruta si fuera cambiada, entonces el rutina leería primero esa variable. Si la misma está vacia toma el valor de la constante, sino el de la variable que contiene la modificación. De todas maneras, la constante simpre quedaría con el valor original y solo podría cambiarla ingresando al código.

Perdón por la extención.

Un saludo.

Chelo2
OpenOffice 4.1.3 en Windows 7
Chelo2
 
Mensajes: 100
Registrado: Mié Ago 14, 2013 4:25 am
Ubicación: Lomas de Zamora, Buenos Aires, Argentina

Re: Valor de una constante mediante un diálogo.

Notapor fornelasa » Mié Ago 12, 2015 10:24 pm

Por eso digo ..... no digo que lo resolveré pero aqui un posible ejemplo:

A) Creamos con el bloc de notas en una ruta fija (por ejemplo C:\Users\Federico\Documents\AAAAAAA\) un archivo de texto al que llamaremos constante.txt
dentro de este archivo tendremos como dato una sola linea muy similar a: C:\Users\Federico\Documents\
que digamos sería la constante original

Despues:
Código: Seleccionar todo   Expandir vistaContraer vista
Sub RutaActual
Open "C:\Users\Federico\Documents\AAAAAAA\constante.txt" For Input As #1
Line Input #1, sLinea
Msgbox sLinea
Close #1
End Sub

Sub NuevaRuta
ruta = InputBox("Teclee la ruta en donde se guardará el archivo", "Ruta Archivo")
Open "C:\Users\Federico\Documents\AAAAAAA\constante.txt" For Output As #1
Print #1, ruta
Close #1
End Sub

Analiza bien el codigo y hagamos pruebas, veremos que la constante siempre está ahi, aún si se apaga la maquina.
Espero se capte la idea.

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!
Avatar de Usuario
fornelasa
 
Mensajes: 3223
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Valor de una constante mediante un diálogo.

Notapor Chelo2 » Vie Ago 14, 2015 4:39 pm

Siiiiiii... excelentee Fedeee.. anduvo perfecto!!

Perdón por la demora en contestar pero no podía probarlo, porque me salían otros errores po otros temas. Pero estó finalmente funcionó de maravillas.

No saben lo que voy aprendiendo en este foro. Pienso que cuando empecé creía que era chino y jamás iba a poder generar nada.. ya que solo soy aficionado a este tema de las macros, pero entre el libro d Mauricio, la wiki, el blog de SLV y las respuestas a los otros usuarios y muchoooooo "ensayo y error" he hecho muchas cosas para facilitarme a mis empleados y a mi la tarea de la oficina pública en la que trabajo.

Les doy muchas gracias.. y un saludo cordial desde Buenos Aires, Argentina.

Chelo2
OpenOffice 4.1.3 en Windows 7
Chelo2
 
Mensajes: 100
Registrado: Mié Ago 14, 2013 4:25 am
Ubicación: Lomas de Zamora, Buenos Aires, Argentina

Re: [RESUELTO] Valor de una constante mediante un diálogo.

Notapor fornelasa » Vie Ago 14, 2015 4:50 pm

¡Excelente! que bien que funcionó. :super: :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!
Avatar de Usuario
fornelasa
 
Mensajes: 3223
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] Valor de una constante mediante un diálogo.

Notapor mauricio » Mar Ago 18, 2015 6:21 am

También puedes usar mi extensión para facilitar la programación de macros: EasyDev

después de instalar la usas de la siguiente manera:
Código: Seleccionar todo   Expandir vistaContraer vista
Sub Main
   util = createUnoService("org.universolibre.util.EasyDev")
   ruta = InputBox("Teclee la ruta en donde se guardará el archivo", "Ruta Archivo")
   util.setConfig("RutaArchivo", ruta)
End Sub

Para recuperar:
Código: Seleccionar todo   Expandir vistaContraer vista
Sub Main
   util = createUnoService("org.universolibre.util.EasyDev")
   ruta = util.getConfig("RutaArchivo")
   util.msgbox(ruta)
End Sub

Si pudieras validarme que funcionan bien estos métodos que acabo de agregar te lo agradeceré mucho...

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
mauricio
 
Mensajes: 5877
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: [RESUELTO] Valor de una constante mediante un diálogo.

Notapor fornelasa » Mar Ago 18, 2015 5:17 pm

Hola Mauricio, con LibreOffice 4.4.5.2 hay inconveniente:

Imagen

Se me está formando la idea de que "entre más conozco a LibreOffice más quiero a mi OpenOffice"

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!
Avatar de Usuario
fornelasa
 
Mensajes: 3223
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] Valor de una constante mediante un diálogo.

Notapor mauricio » Mar Ago 18, 2015 7:56 pm

Ya vi el error, me falto agregar unos archivos... lo arreglo hoy mismo...

 Editado: Corregido, si puedes volver a probar, gracias... 


Para que pedir al usuario que teclee una ruta, cuando se puede seleccionar:
Código: Seleccionar todo   Expandir vistaContraer vista
   util = createUnoService("org.universolibre.util.EasyDev")
   
    ruta = util.getFolder("")
    util.setConfig("RutaArchivo", ruta)
   
    ruta = util.getConfig("RutaArchivo")
   util.msgbox(ruta)
______________________________________________
"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
mauricio
 
Mensajes: 5877
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: [RESUELTO] Valor de una constante mediante un diálogo.

Notapor fornelasa » Mar Ago 18, 2015 9:00 pm

Parece que ahora no me deja instalar la extensión:
Imagen
¿Será porque la intenté instalar en la versión 5?
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!
Avatar de Usuario
fornelasa
 
Mensajes: 3223
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] Valor de una constante mediante un diálogo.

Notapor mauricio » Mar Ago 18, 2015 9:27 pm

Si, perdon, olvide mencionar que solo funciona en LibreOffice Estable, tengo que agregarle esta restricción a la extensión... LibO 5 esta muy inestable...
______________________________________________
"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
mauricio
 
Mensajes: 5877
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: [RESUELTO] Valor de una constante mediante un diálogo.

Notapor mauricio » Mar Ago 18, 2015 9:28 pm

Ya vi otro problema, asegurate de que la extensión no se renombre, mira como el navegador le agrega (3) al final por que ya tienes otras descargas, borra todas las que tengas y deja solo la ultima...
______________________________________________
"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
mauricio
 
Mensajes: 5877
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: [RESUELTO] Valor de una constante mediante un diálogo.

Notapor fornelasa » Mar Ago 18, 2015 10:01 pm

mauricio, De tus dos primeros codigos iniciales de este debate ya funciona ..... aunque.
Del codigo recuperar funciona bien si la ultima linea es:
Código: Seleccionar todo   Expandir vistaContraer vista
msgbox(ruta)

Si se pone está linea no funciona:
Código: Seleccionar todo   Expandir vistaContraer vista
util.msgbox(ruta)

Marca un error que dice: null process service factory


Si, ya funciona perfecto super :super:


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!
Avatar de Usuario
fornelasa
 
Mensajes: 3223
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] Valor de una constante mediante un diálogo.

Notapor mauricio » Mié Ago 19, 2015 12:56 am

Excelente...

Por favor, cualquier nuevo comentario con esta extensión, favor de verlo por acá: https://forum.openoffice.org/es/forum/v ... 36&t=11236

Gracias
______________________________________________
"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
mauricio
 
Mensajes: 5877
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados