[RESUELTO] Macro para pulsar tecla

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
zferrio
Mensajes: 11
Registrado: Mar Jul 16, 2019 5:30 pm

[RESUELTO] Macro para pulsar tecla

Mensaje por zferrio »

Necesito crear una macro para pulsar una tecla determinada, por ejemplo F4.
Quiero que al abrir un documento se active esa macro.
El problema es que no conozco Basic.
Alguien puede ayudarme?
Última edición por zferrio el Mar Sep 03, 2019 7:50 pm, editado 1 vez en total.
Libreoffice 6.0 con Windows 10
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Macro para pulsar tecla

Mensaje por fornelasa »

Son dos eventos diferentes:
1) Al pulsar F4
2) Al abrir documento
Por favor da más detalles de la pregunta.
Saludos.
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!
zferrio
Mensajes: 11
Registrado: Mar Jul 16, 2019 5:30 pm

Re: Macro para pulsar tecla

Mensaje por zferrio »

La segunda frase es sólo para ampliar información.
Lo que necesito es que la macro pulse una tecla.
Libreoffice 6.0 con Windows 10
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Macro para pulsar tecla

Mensaje por fornelasa »

Ojala puedas describir para que deseas hacer eso, en mi opinión es redundar mucho la macro.
¿Que hace F4?
Estando en un archivo abierto de Calc LibreOffice, por ejemplo en la celda A1 de la Hoja1, si pulsamos la tecla F4 nos aparece un cuadro de dialogo que dice:

Código: Seleccionar todo

Información
No se encuentra ninguna referencia a otra celda en las celdas seleccionadas
Obvio, esperamos ver el mismo cuadro de dialogo después de ejecutar estas macros.

Vamos a suponer que estamos en un archivo de Calc llamado PulsarF4.ods

Usando el programa bloc de notas, copia, pega y guarda este script en la ruta correcta y ponle por nombre de archivo pulsarF4.wsf

Código: Seleccionar todo

<package>
   <job id="vbs">
      <script language="VBScript">
      Dim Args
      Dim AppString
      
      Set Args = WScript.Arguments
      AppString = Args(0)
        set WshShell = WScript.CreateObject("WScript.Shell")
        WshShell.AppActivate AppString
        WshShell.SendKeys "{F4}"
       </script>
   </job>
</package>
En un modulo del archivo PulsarF4.ods crea esta macro y después Asignala al evento "Abrir documento", (Menú -- Herramientas -- Personalizar -- Ficha Sucesos -- Seleccionamos Abrir documento -- Pulsar botón Macro -- Doble clic PulsarF4.ods -- Doble clic Standard -- Doble clic Module1 -- Nombre de macro SeleccionarF4 -- Botón Aceptar -- Botón Aceptar)

Código: Seleccionar todo

Sub SeleccionarF4()
   AppString = StarDeskTop.ActiveFrame.Title
   Shell("WScript ""C:\Users\Federico\Downloads\pulsarF4.wsf""" & " " & AppString,False)
End Sub
De lo anterior cambia esta ruta C:\Users\Federico\Downloads\pulsarF4.wsf por tu ruta correcta.


Salva y cierra tu archivo, vuelvelo a abrir. Ahora debemos obtener el mismo resultado de arriba, es decir:

Código: Seleccionar todo

Información
No se encuentra ninguna referencia a otra celda en las celdas seleccionadas
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!
zferrio
Mensajes: 11
Registrado: Mar Jul 16, 2019 5:30 pm

Re: Macro para pulsar tecla

Mensaje por zferrio »

Explicaré mi intención.
La tecla F4 es un ejemplo. Podría servir cualquier tecla que no tenga asignada función.
He creado una aplicación que consiste en una base de datos en la que se introducen datos en determinados campos. Esos campos se utilizarán para crear un documento de texto writer cuando así lo necesite el ususario de la aplicación. Hasta aquí está ya creado y funcionando, de manera que el documento creado es una combinación de correspondencia.
De momento, los usuarios deben pulsar la tecla F4, a la que he asignado la función "Editar documentos individuales".
Yo quiero que, al crear ese documento writer nos "fusione", de forma automática, los datos de los campos creados en un documento final, pulsando la tecla F4. Creo que eso se puede hacer creando una macro que nos pulse la tecla determinada.
No conozco ningún otro sistema, pero estoy abierto a posibles alternativas.
La solución de fornelasa aún no la he probado, pero creo que no es lo que deseo hacer.
Libreoffice 6.0 con Windows 10
zferrio
Mensajes: 11
Registrado: Mar Jul 16, 2019 5:30 pm

Re: Macro para pulsar tecla

Mensaje por zferrio »

He probado la solución aportada por fornelasa y funciona.
El problema es que dependo de un archivo ubicado en un determinado lugar y no siempre va a ser posible tener ese archivo en dicha ruta.
Busco el mismo resultado con una macro que pulse la tecla asignada.
Libreoffice 6.0 con Windows 10
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Macro para pulsar tecla

Mensaje por fornelasa »

Hola zferrio, a continuación mis comentarios:
1) De inicio tu consulta es bastante corta y no muy entendible.
2) En base al punto 1 se entendió que al abrir un archivo, una macro cualquiera nos pulse un tecla, y precisamente es lo que hace los scripts ya enviados. [Tema resuelto]
3) Después das una explicación (que con todo respeto) solo tu entiendes.
4) Después dices que ni has probado la macro y que no es lo que deseas
La solución de fornelasa aún no la he probado, pero creo que no es lo que deseo hacer.
5) Después dices que si que siempre si funciona pero que no es lo que necesitas
He probado la solución aportada por fornelasa y funciona.
6) Y al final sigues preguntando lo que preguntasté desde un inicio
Busco el mismo resultado con una macro que pulse la tecla asignada.
7) ¿Que debe entenderse por esto:?
El problema es que dependo de un archivo ubicado en un determinado lugar y no siempre va a ser posible tener ese archivo en dicha ruta.
Al final sigo sin entender tu consulta. Ojala alguien más de la comunidad adivine que deseas hacer.

Saludos.
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!
zferrio
Mensajes: 11
Registrado: Mar Jul 16, 2019 5:30 pm

Re: Macro para pulsar tecla

Mensaje por zferrio »

Hola fornelasa,
He realizado una consulta para resolver un problema y no deseo entrar en confrontación con nadie.
Lo que necesito es que una macro realice la acción de pulsar una tecla (por ejemplo, F4). Es decir, que cuando se ejecute la macro, se pulse la tecla mencionada.
Tu me has facilitado una solución, que incluye un script, pero no es lo que yo quiero. Quiero precindir del script.
Te agredezco que hayas dedicado tu tiempo a intentar darme una solución pero no es, en esencia, lo que yo solicitaba.
Libreoffice 6.0 con Windows 10
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro para pulsar tecla

Mensaje por mauricio »

entiendo que tienes ya realizada una macro que hace ciertas acciones... ¿es correcto?... si es así, no entiendo por que no asignar a cualquier tecla dicha macro, o al abrir documento como mencionas... si no es así, no he entendido lo que tienes y lo que quieres lograr.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
zferrio
Mensajes: 11
Registrado: Mar Jul 16, 2019 5:30 pm

Re: Macro para pulsar tecla

Mensaje por zferrio »

Quiero conseguir que al abrir un documento, donde he creado una combinación de correspondencia, de forma automática realice la acción de "Editar documentos individuales".
Para ello, he pensado asignar esa acción a una tecla (F4), y que esa tecla se pulse mediante una macro, que se ejecuta al abrir el documento
He pensado que funcionaría...
Libreoffice 6.0 con Windows 10
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Macro para pulsar tecla

Mensaje por fornelasa »

zferrio escribió:he pensado asignar esa acción a una tecla (F4), y que esa tecla se pulse mediante una macro, que se ejecuta al abrir el documento
zferrio escribió:Lo que necesito es que una macro realice la acción de pulsar una tecla (por ejemplo, F4). Es decir, que cuando se ejecute la macro, se pulse la tecla mencionada.
Que es exactamente lo que hace la macro y el script previamente enviado.
zferrio escribió:He probado la solución aportada por fornelasa y funciona.
zferrio escribió:Quiero precindir del script.
Hasta donde yo sé, es imposible hacerlo de otra manera, al menos no en Basic. Parece que si seguimos con esta idea es forzoso usar el script necesariamente.
Eso nos llevaría al paso siguiente:
fornelasa escribió:7) ¿Que debe entenderse por esto:?
El problema es que dependo de un archivo ubicado en un determinado lugar y no siempre va a ser posible tener ese archivo en dicha ruta.
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!
zferrio
Mensajes: 11
Registrado: Mar Jul 16, 2019 5:30 pm

Re: Macro para pulsar tecla

Mensaje por zferrio »

Si no te importa, esperaré las aportaciones de otros usuarios, si las hubiese.
Libreoffice 6.0 con Windows 10
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Macro para pulsar tecla

Mensaje por fornelasa »

Si no te importa, esperaré las aportaciones de otros usuarios, si las hubiese.
No, no me importa.
De hecho tu pregunta la aproveché pensando en el beneficio de la comunidad por si a alguien le sirve incluyendote a ti, si no te sirve es igual para mi. Yo no tengo ningún interés en tu proyecto.
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!
zferrio
Mensajes: 11
Registrado: Mar Jul 16, 2019 5:30 pm

Re: Macro para pulsar tecla

Mensaje por zferrio »

Hola fornelasa,
Mi respuesta anterior era más extensa, pero por algún motivo únicamente se publicó el último párrafo.
Te respondo a tu pregunta sobre porque no me sirve la opción del script.
En la aplicación que he creado, hay más de 300 documentos en los que necesito implementar esta solución.
La aplicación ( y estos documentos afectados) puede estar en diferentes ubicaciones dependiendo de los usuarios.
De esta forma, en ocasiones estará en el disco duro, en otras en un pendrive, en otras en un servidor ..., lo que obligaría a modificar en los más de 300 documentos la ruta del script.
Entenderás que eso no es viable, y por ello necesito que la solución sea que la macro realice la acción que he indicado.
Saludos.
Libreoffice 6.0 con Windows 10
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Macro para pulsar tecla

Mensaje por fornelasa »

zferrio escribió:Mi respuesta anterior era más extensa, pero por algún motivo únicamente se publicó el último párrafo.
Si, es correcto, si la ví, pero como dices tú algo pasó.

Pero tu sabes lo que escribisté y yo lo vi.

En base a lo anterior, te comento:
fornelasa escribió:si no te sirve es igual para mi.
zferrio escribió:esperaré las aportaciones de otros usuarios, si las hubiese.
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!
zferrio
Mensajes: 11
Registrado: Mar Jul 16, 2019 5:30 pm

Re: Macro para pulsar tecla

Mensaje por zferrio »

Bien, sólo quería dejar claro el motivo por el cual no me sirve la solución que tu aportas.
Libreoffice 6.0 con Windows 10
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro para pulsar tecla

Mensaje por mauricio »

zferrio escribió:Quiero conseguir que al abrir un documento, donde he creado una combinación de correspondencia, de forma automática realice la acción de "Editar documentos individuales".
El siguiente código, asignado al evento abrir del documento, debería de funcionar:

Código: Seleccionar todo

Dim document As Object
Dim dispatcher As Object

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:MailMergeCreateDocuments", "", 0, Array())
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
zferrio
Mensajes: 11
Registrado: Mar Jul 16, 2019 5:30 pm

Re: Macro para pulsar tecla

Mensaje por zferrio »

Eso es!!! Funciona!!! SI SE PUEDE!
Muchas gracias, Mauricio. Eternamente agradecido.
Saludos
Libreoffice 6.0 con Windows 10
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro para pulsar tecla

Mensaje por mauricio »

No olvides marcar correctamente como [RESUELTO]
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
zferrio
Mensajes: 11
Registrado: Mar Jul 16, 2019 5:30 pm

Re: Macro para pulsar tecla

Mensaje por zferrio »

lo siento, no encuentro dónde marcar para RESUELTO
Libreoffice 6.0 con Windows 10
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro para pulsar tecla

Mensaje por mauricio »

______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Responder