Bienvenidos sean a este post, hasta hoy hemos visto como trabajar con funciones y propiedades propias del lenguaje pero en algunas circunstancias deberemos extender a VBscript porque necesitaremos poder acceder a objetos que existen del lado del cliente, por ejemplo tenemos estas dos funciones:
- CreateObject
- GetObject
Estas son heredadas de Visual Basic y nos dan la capacidad de poder utilizar objetos de las librerias de linkeo dinamico (DLL) del Sistema Operativo o usar aplicaciones para acceder a sus objetos, si bien esto estaba mas pensado para permitirle una mejor interaccion entre el Internet Explorer y otras aplicaciones, por ejemplo Office, o conectarse a bases de datos por medio de un ODBC, al sucumbir ante Javascript esta idea quedo solamente para algunas acciones del cliente de los cuales hablaremos mas adelante.
CreateObject
La funcion se encarga de crear un objeto de un tipo especificado, su sintaxis es la siguiente:
CreateObject(Servidor.tipo[, ubicacion])
En este caso el unico parametro que es opcional es ubicacion porque sera utilizado para indicar donde crearemos el objeto, en cambio servidor va a ser el nombre de la aplicacion que nos dara el objeto y tipo indica el tipo/clase del objeto, veamos un ejemplo para entender el concepto:
object.vbs
txt="Este es un hermoso dia"
Set objReg=CreateObject("vbscript.regexp")
objReg.Pattern="e"
wscript.echo objReg.Replace(txt,"##")
En este caso tendremos un texto almacenado en txt, luego por medio de Set crearemos un objeto llamado objReg, en este caso usaremos un CreateObject y pasaremos a vbscript y el objeto regexp (Regular Expression), despues con nuestro objeto usaremos a Pattern (propiedad del objeto regexp) para indicar cual es el patron a buscar, por ultimo mostraremos en pantalla el reemplazo hecho por Replace (metodo del objeto) donde le pasaremos el texto (txt), recuerden que usamos Pattern para indicar que buscar, y despues con que vamos a reemplazarlo, si lo hacen se vera de la siguiente manera

Si bien esto podriamos haberlo hecho de otra forma mas simple, esto fue simplemente de practica pero mucho mas adelante veremos su verdadero uso, pasemos a la siguiente funcion.
GetObject
Esta funcion es similar a la anterior porque ambas devuelven una referencia a un objeto pero esta no crea un objeto a diferencia del anterior, veamos primero su sintaxis:
GetObject([Ruta][, Clase])
Esta funcion a diferencia de la anterior tiene dos argumentos que son opcionales, en el cual Ruta es la ruta completa de un archivo que podemos enviarle, el segundo argumento se usa para indicar la clase del objeto de automatizacion y su sintaxis es: nombreApp.tipoObjeto.
Nota: Si omitimos el primer argumento el segundo es obligatorio.
Como dijimos antes esta funcion a diferencia de la anterior tiene diferentes conductas dependiendo cuando la usemos veamos la siguiente tabla:
App ya en ejecucion | Resultado |
GetObject(«», «Excel.Application») | Devuelve una nueva referencia de la aplicacion |
GetObject(«c:\datos.xls») | Devuelve una referencia a una hoja de calculo dentro de una instancia de Excel en ejecucion |
GetObject(,»Excel.Application») | Devuelve una referencia ya existente de la aplicacion |
Ahora veamos la siguiente tabla:
Aplicacion no ejecutada | Resultado |
GetObject(«», «Excel.Application») | La aplicacion se inicia en otra instancia diferente |
GetObject(«c:\datos.xls») | Se devuelve una referencia a una nueva instancia de la aplicacion con el archivo cargado. |
GetObject(,»Excel.Application») | Devuelve un error |
Como pueden ver dependiendo del estado de la aplicacion podremos tener distintas conductas e inclusive algun error, para entender esta funcion tomemos el codigo anterior y modifiquemoslo de la siguiente manera:
Set miObjeto = GetObject("","InternetExplorer.Application")
WScript.Echo miObjeto.name
miObjeto.Close
Primero crearemos el objeto llamado miObjeto y en este crearemos el objeto para instanciar la referencia al InternetExplorer, para luego mostrar en pantalla la propiedad name de nuestro objeto y por ultimo cerraremos el objeto, veamos su salida

Aunque despues de apretar Aceptar nos devolvera un error porque Internet Explorer no soporta close pero esto podemos usarlo para otras aplicaciones.
Nota: Esto fue verificado con un Windows 10.
Antes de finalizar con este post vamos a ver un ultimo ejemplo practico con CreateObject pero esta vez usaremos a wscript, veamos el siguiente codigo:
object.xls
set WshShell=WScript.CreateObject("WScript.Shell")
strAnswer = InputBox("Please enter a name for your new file:")
WshShell.run "chrome.exe"
WScript.sleep 100
WshShell.sendkeys "tinchicus.com"
WshShell.sendkeys "{ENTER}"
En este caso primero crearemos un objeto llamado WshShell donde por medio de CreateObject usaremos a Wscript.Shell (la terminal de Windows), luego usaremos un inputbox para solicitar un nombre de un archivo, nuestro siguiente paso sera usar el metodo run para ejecutar a Google Chrome, luego usaremos el metodo sleep con el valor de 100 para hacer una pequeña pausa, despues por medio de sendkeys enviaremos una direccion de internet (url), por ultimo enviaremos un Enter a traves de sendkeys, en este caso cuando ingresemos el nombre del archivo este sera el receptaculo de nuestra direccion de internet y luego esta sera enviada a nuestro navegador, veamos su salida
Como pueden observar como al utilizar el nombre del archivo para almacenar temporalmente la direccion web para luego poder pasarlo a nuestro google chrome, todo de forma automatica, esto si bien ahora no tiene mucha practicidad mas adelante sera muy util para llamar a otras aplicaciones.
En resumen, hoy hemos visto el primer paso para automatizar algunas tareas de nuestro, las dos funciones principales para este tipo de tarea, hemos visto como utilizarlas y algunas ventajas de estas, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.
Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.
Tambien podes comprar mi libro sobre VBscript en Amazon

Tambien podes donar
Es para mantenimiento del sitio, gracias!
$1.00
Hola, muy interesante sus cursos, muchas gracias.
Tengo una duda.
Como hago para hacer clic en un botón en especifico?
Me gustaMe gusta
Muchas gracias, te averiguo porque el vbscript siempre lo use como script por fuera de los navegadores y no tenemos muchos botones para presionar 😁, pero para esos casos soy mas de usar getElementById en Javascript y antes se usaba a la funcion click pero hoy se encuentra deshabilitada por defecto, se puede habilitar pero eso si desconozco completamente, abrazo y gracias por visitar el sitio!
Me gustaMe gusta