** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Sendkeys variable string no funciona Windows11
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoSendkeys variable string no funciona Windows11

 Responder Responder
Autor
Mensaje
paloma Ver desplegable
Habitual
Habitual


Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 139
Enlace directo a este mensaje Tema: Sendkeys variable string no funciona Windows11
    Enviado: 03/Noviembre/2023 a las 12:53

Hola, hasta ahora venía pasando una variable string a Sendkeys para pasar los datos de varios controles de un formulario a un bloc de notas que me ayudásteis en este hilo Pasar datos de formulario access a Notepad - Foro de Access y VBA (mvp-access.com)

Pero ahora me han instalado windows 11 y no me funciona. Se me abre mil veces como loco archivos en blanco del Notepad

Creo que lo que afecta son los Enter que incluyo en la variable como vbCrLf porque cuando lo sustituyo por no hace eso pero es que no hace nada. Solo se abre el bloc de notas pero no pasa ningún valor.

Este es el código, ¿qué puedo hacer?
Shell "C:\WINDOWS\NOTEPAD.EXE", vbNormalFocus
str = Replace(str, "(", "-")
str = Replace(str, ")", "-")
SendKeys str
SendKeys "{NUMLOCK}" 

La línea SendKeys "{NUMLOCK}"  la pongo porque Sendkeys desconecta el teclado numérico y así lo vuelvo a conectar. Pero quitándola, tampoco funciona

Y es que además, pasando un simple
Shell "C:\WINDOWS\NOTEPAD.EXE", vbNormalFocus
Sendkeys "hola"

se abre el bloc pero no pasa el valor "hola"

Gracias.

Saludos,


Editado por paloma - 03/Noviembre/2023 a las 13:16
Arriba
McPegasus Ver desplegable
Habitual
Habitual


Unido: 02/Abril/2007
Localización: España
Estado: Sin conexión
Puntos: 81
Enlace directo a este mensaje Enviado: 03/Noviembre/2023 a las 17:48

Hola Paloma,

Ya nos hemos dado cuenta de que nuestro Notepad ya no es el que era . Descanse en paz nuestro Notepad y que le den al nuevo Notepad.

Tras esta introducción quiero indicarte que por las pruebas que he realizado su actitud es divergente, unas veces escribe y otras no. Yo no seguiria por esta línea.

¿Se te ha ocurrido utilizar el método CreateObject("Scripting.FileSystemObject") para crear un archivo directamente?

Es más fiable para crear un archivo desde cero o abrir uno existente, modificar o crearle contenido y guardar los cambios.

Dinos si necesitas más información sobre ello, o como los masters son un poco quisqui lo que haría es crear un nuevo hilo.

Buen fin de semana.

Rafael [McPegasus]
Valencia
www.mcpegasus.net
..:: Tu Access, Mi Pasión ::..
Arriba
paloma Ver desplegable
Habitual
Habitual


Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 139
Enlace directo a este mensaje Enviado: 03/Noviembre/2023 a las 20:49

Hola Pegasus, jope, al final después de dar muchas vueltas, he encontrado la solución.. 

Este código me funciona, pero mira, no sé hasta cuándo, hartita me ha dejado. Lo de crear objeto ¿te importaría xfa pasarme info para darle una vuelta también? Muuchas gracias.

Lo de incorporar una pausa, parece ser que en estas líneas se precisa porque si no se atora, eso he leído, y la verdad es que sí, sin la pausa no tira. En finnn

str = Replace(str, "(", "-")
str = Replace(str, ")", "-")
Dim X
X = Shell("C:\WINDOWS\NOTEPAD.EXE", 1)
esperar (0.5)
AppActivate X
esperar (0.5)
SendKeys str
SendKeys "{NUMLOCK}"

Saludos,
Arriba
McPegasus Ver desplegable
Habitual
Habitual


Unido: 02/Abril/2007
Localización: España
Estado: Sin conexión
Puntos: 81
Enlace directo a este mensaje Enviado: 04/Noviembre/2023 a las 09:44
Claro, en la web tenemos disponible el artículo: VBA: método OpenTextFile – Access Global (access-global.net) con vídeo explicativo y todo.

Que lo disfrutes y lo uses.
Rafael [McPegasus]
Valencia
www.mcpegasus.net
..:: Tu Access, Mi Pasión ::..
Arriba
paloma Ver desplegable
Habitual
Habitual


Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 139
Enlace directo a este mensaje Enviado: 08/Noviembre/2023 a las 01:53


Graciass!!! lo miro!

saludos
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Enlace directo a este mensaje Enviado: 08/Noviembre/2023 a las 11:37
Hola,

Hay alternativas a SendKeys que evitan (en principio) el error


También invocar a la biblioteca de Word me funcionó en un caso (1068 lanza una PrintScreen)

    Dim wrdap
    Set wrdap = CreateObject("Word.Application")
    wrdap.WordBasic.SendKeys "{1068}"


Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
McPegasus Ver desplegable
Habitual
Habitual


Unido: 02/Abril/2007
Localización: España
Estado: Sin conexión
Puntos: 81
Enlace directo a este mensaje Enviado: 08/Noviembre/2023 a las 11:42
Gracias tomo nota, el Sendkeys parece infinito LOL.

En este caso, por las pruebas que he realizado es que el bloc de notas tras abrirse hace una pausa muy prolongada por lo que hay que hacer una pausa también prolongada para lanzar el SendKeys.

Aunque yo tomaría el camino de crear un txt ya que seguro en un futuro le volverá a sacar partido.
Rafael [McPegasus]
Valencia
www.mcpegasus.net
..:: Tu Access, Mi Pasión ::..
Arriba
paloma Ver desplegable
Habitual
Habitual


Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 139
Enlace directo a este mensaje Enviado: 28/Diciembre/2023 a las 19:27

Hola, perdón la tardanza, muchas gracias por contestar a los dos. Xavi, con tú código me pasaba lo mismo, el Notepad se volvía loco y se abría sin parar. De hecho, se debió quedar pirado porque tuve que pedir asistencia para que me lo reinstalaran.

Al final lo conseguí con este código, cogiendo un poco de todo. Creé un fichero plano como borrador para llamarlo cada vez que lo necesite y escribir en él.

'Escribir en el fichero txt
Open "C:\Users\Documents\BD\DatosDemanda.txt" For Output As FreeFile
Print #1, str
Close

'Abrir el fichero
Shell "Notepad.exe C:\Users\Documents\BD\DatosDemanda.txt", vbNormalFocu


Se puede cerrar el hilo,

Saludos,
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable