¿Se puede crear un objeto OLE con la instrucción sendkyes?

Tengo un código con la instrucción Sendkyes, lo cual funciona a la perfección, lo tengo en una maquina virtual sin embargo si me desconecto de ella me da el error:

Investigando un poco encontré que se puede solucionar creando un objeto OLE, ¿y mi pregunta es como podría crear un objeto OLE con la instrucción sendkyes para poder saltar ese error? Ya que lo que he visto en la documentación de microsoft y algunos foros siempre hacen referencia a los elementos propios del libro.

1 respuesta

Respuesta
1

La exposición es confusa:
Si hay una aplicación en una ubicación (la maquina virtual) en la que se ejecutan una secuencia de ordenes que ejecutan unas acciones y esa ubicación deja de estar accesible (se desconecta de la maquina en la que se ubica) ...
La tecnología OLE no puede hacer nada para remediarlo, lo adecuado seria reproducir ese código en una ubicación que siempre fuera accesible (posiblemente un copy & paste seria suficiente).

De hecho si funciona cuando la ruta es accesible es porque se utiliza la tecnología OLE.

Es probable que no aprecie los detalles, se necesitarían mas datos para ver el conjunto.

Gracias Enriqueh, la maquina virtual siempre tiene acceso a la ruta donde se encuentran los archivos y a la conexión hacia el servidor para que se ejecute correctamente PuTTY, se abre el excel con una tarea programada y funciona hasta que llega a la instrucción Sendkeys, y funciona perfecto cuando mantengo la maquina virtual abierta remotamente desde mi PC, la función Sendkeys da ese error cuando me desconecto de la VM (dejandola activa).

Aquí te pongo parte de mi codigo:

Call Shell("C:\Program Files\PuTTY\putty.exe -ssh [email protected] -pw xxxxxx", vbNormalFocus)
Application.Wait (Now + TimeValue("00:00:10"))
'aquí empiezan las intrucciones para navemar en la aplicación PuTTY
Call SendKeys("5", True)
Call SendKeys("~", True)
Application.Wait (Now + TimeValue("00:00:03"))
Call SendKeys("~", True)

Aquí te dejo una imagen de la interfaz de putty:

lo hago así porque no me dan acceso directamente a la base de datos para obtener los datos de ahí, muchas gracias por responder.

Quedo al pendiente, saludos.

Por eso quiero hacerlo atra vez de una objeto OLE de acuerdo a este articulo debería de funcionar, pero tengo problemas hacer eso (҂◡_◡)

Saludos.

Hola Enriqueh, ya lo solucioné cambié la instrucción:

Call SendKeys("5", True)

por 

Application.SendKeys "5", True

y funciona tal cual si tuviera la VM abierta en mi equipo.

Pregunta, al usar Application. ¿SendKeys ya es un objeto OLE? Saludos.

-------------------------
Respecto a OLE:
OLE son las siglas de Object Linking and Embedding action; esto es desarrollado por Microsoft y deja que la aplicación de Office se integre con otras aplicaciones. Esto permite que una aplicación de edición envíe parte del documento a otras aplicaciones y luego lo importe y lo recupere con más contenido.
-------------------

La diferencia que aprecio, es que Call espera a que finalice el proceso y Application lo hace lo mismo de forma asíncrona.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas