SlideShare a Scribd company logo
1 of 6
Download to read offline
Tutorial básico de vbscript (Parte 5)                                                          Noviembre 2008

                                                      CommonDialog

El objeto commondialog sirve para mostrar un mensaje de abrir/guardar como. En mi caso particularmente no hago
uso de este objeto, pero puede resultar últil para quienes quieran agregar un poco más de interactividad a sus
scripts, y de cierto modo, hacer más sencillo el uso de este para el “usuario final”.

Para el uso de esta ventana, solo será necesario pasarle ciertos parámetros para hacer uso de la misma,
inicializandolo por medio de useraccounts.commondialog.

Nota: Este objeto solo se encuentra presente en Win XP, no antes, y en Vista se he eliminadoexiste otro objeto que
se inicia con mscomdlg.commondialog, y que cumple una función similar pero con más opciones, pero este último,
solamente esta disponible para las pc con VB

Los parámetros que se deben de pasar a este objeto son:

         Filtros: Filter
         Indice de filtros: Filterindex
         Directorio inicial: InitialDir
         Opciones: Flags


Luego de seleccionados los parámetros de la ventana, podremos mostrala por medio de la función Showopen y
obtendremos la ruta por medio de Filename

El primero de los parámetros, Filter, hace referencia a los tipos de archivos que van a aparecer en el cuadro.

Filterindex determina cual de los tipos de archivos seleccionados (Filter) son los que van a aprecer por defecto.

Initialdir es el directorio raíz que va a aparecer por defecto (de cualquier manera se podrá subir por el directorio)

Y Flags son algunas opciones extras que se pueden seleccionar a la hora de mostrar la ventana (en este caso solo
mostraré una de ellas)

Dado que este objeto es de fácil utilización, pasaré directamente a un ejemplo, donde explicaré un poco mejor cada
uno de estos parámetros.

Ejemplo:

Set objdialog = createobject("useraccounts.commondialog")
objdialog.filter = "VBScript|*.vbs|Javascript|*.js"
objdialog.filterindex = 1
objdialog.initialdir = "C:Documents and SettingsNovlucker"
odresp = objdialog.showopen
If odresp = -1 then
Msgbox objdialog.filename
End If



     by Novlucker                                                                                                       1
Tutorial básico de vbscript (Parte 5)                                                     Noviembre 2008

El resultado:




Pasemos ahora a repasar cada una de las opciones que hemos pasado.

objdialog.filter = “VBScript|*.vbs|Javascript|*.js”

Como había comentado, a través de los filtros, podremos determinar, cuales serán los tipos de archivos que
aparecerán al visualizar los diferentes archivos de una carpeta. En el ejemplo, he puesto archivos vbscript, y
javascripts.

El “tipo de archivo” en palabra (VBScript y Javascript) no hace ningún tipo de diferencia, sino que se trata
simplemente de lo que servirá como referencia para el usuario, es decir, podríamos poner cualquier cosa y el
resultado final sería el mismo, como ejemplo:

objdialog.filter = “Archivos vbs|*.vbs|Archivos javascript|*.js”

Lo que si hace la diferencia, es el asterísco seguido de la extensión del archivo que se mostrará, para el ejemplo,
*.vbs, y *.js. Para el caso de querer establecer “todos los archivos”, se utilizará algo del estilo “All Files|*.*”

Notese además que cada uno de estos valores va separado del siguiente, por medio de un simbolo “pipe”
(generalmente utilizado en distintos lenguajes para la canalización de órdenes)




     by Novlucker                                                                                                2
Tutorial básico de vbscript (Parte 5)                                                         Noviembre 2008

Como habíamos dichio antes Filterindex determina el tipo de archivo por defecto que será mostrado, en este caso
he elegido el index 1, que en el Filter serían los archivos vbs, de haberse elegido 2, lo que se mostraría primero sería
javascript y no vbs.

objdialog.initialdir = “C:Documents and SettingsNovlucker”

Como había dicho antes, initialdir establece el directorio en el cual se “abrirá” nuestra ventana, en este caso he
establecido el directorio “C:Documents and SettingsNovlucker”, y como se puede apreciar en la imagen, esto es lo
que se ha mostrado en la ventana, claro está que igualmente se podrá “subir” partiendo de este.

Con esto básicamente establecemos las opciones básicas de nuestra ventana, para luego mostrarla en la línea
siguiente.

odresp = objdialog.showopen

Como se puede ver, he asignado la “respuesta” de este elemento a la variable odresp, lo cual es totalmente
opcional (podría hacerse sin el “odresp =”), pero nos permitirá determinar de manera más exacta, que es lo que pasa
con nuestra ventana, ya que esta variable podrá tener dos valores según el usuario elija algún archivo y de a
ACEPTAR (valor -1), o bien no seleccione ninguno y presione CANCELAR (valor 0). Es por eso que en nuestro ejemplo
utilizamos un condicional IF para determinar cual ha sido la acción que se ha tomado respecto a nuestra ventana, en
caso de haberse elegido un archivo, mostramos su ruta (filename).

Luego de accedido a la ruta del archivo en cuestión, es decisión nuestra lo que se haga con esta ruta, ya sea copiar,
mover, abrir, etc, siempre dentro de las posibilidades de vbs claro está.

Cual es la limitación de esta ventana así como está? Que no es posible la selección de múltiples archivos, sino que
siempre se nos permitirá elegir uno y solo uno de todos los que aparecen.

Para solucionar esto utilizaremos el parámetro flags, el cual entre otras opciones controla la posibilidad de mostrar
un cuadro como el que necesitamos (se tratará solamente esta, aunque existen muchas otras).

Para esto, se pasará &H0200 como valor a este parámetro (siguiendo con el ejemplo anterior):

Ejemplo:

Set objdialog = createobject("useraccounts.commondialog")

objdialog.filter = "VBScript|*.vbs|Javascript|*.js"

objdialog.filterindex = 1

objdialog.flags = &H0200

objdialog.initialdir = "C:Documents and SettingsNovlucker"

odresp = objdialog.showopen




     by Novlucker                                                                                                     3
Tutorial básico de vbscript (Parte 5)                                                     Noviembre 2008



El resultado:




Como se puede ver, el aspecto de nuestra ventana ha cambiado, es un poco más “rústica”, pero igualmente cumple
la misma función.

La particularidad de los datos que nos devuelve esta ventana con respecto a la anterior, es que dado que se
seleccionan múltiples archivos, esta nos devolverá todos los valores en una misma cadena, partiendo del ejemplo
anterior, en el caso de haber elegido los archivos “Script1.vbs” y “Script2.vbs”, el resultado sería el siguiente:




C:DOCUME~1NOVLUC~1Script1.vbs Script2.vbs

En la imagen se ve claramente como las rutas de ambos archivos que hemos seleccionado aparecen en una misma
cadena, además de que dichas rutas se muestran en formato “corto”. Pero si miramos detenidamente, podemos ver
que cada una de estas rutas, esta separada por un espacio, donde la primera parte contiene la ruta a la carpeta
contenedora, y el resto son los archivos en cuestión.
Habiendo visto esto entonces, podremos escribir un método para crear facilmente las rutas a estos archivos, para lo
cual haremos uso de la función split.
Split es una función de vbs que no hace más que “cortar” una determinada cadena, tomando como separador el/los
caractéres que le indiquemos, y guarda en un array cada una de las partes de dicha cadena.



     by Novlucker                                                                                                4
Tutorial básico de vbscript (Parte 5)                                                          Noviembre 2008



Ejemplo:
CadenaTexto = "1;2;3;4;5"

CTtoAray = split(CadenaTexto,";")                        'Cortamos la cadena con ; como separador

For each C in CTtoAray

Msgbox C

Next

Como se puede ver en el ejemplo, con una cadena definida, hemos cortado esta cadena utilizando split, y hemos
guardado cada uno de los valores dentro de un array para luego acceder del modo tradicional.
Veamos ahora entonces como podemos utilizar esta función para obtener las direcciones de los múltiples archivos
seleccionados mediante nuestra ventana.
Como habíamos dicho, los archivos son mostrados en una única cadena pero separados por espacios, por lo que para
poder obtener las rutas simplemente deberemos utilizar la anterior función, pero utilizando como separador, no una
cadena, sino un espacio.
Una vez más siguendo con el ejemplo anterior, el proceso sería más o menos así:


Set objdialog = createobject("useraccounts.commondialog")

objdialog.filter = "VBScript|*.vbs|Javascript|*.js"

objdialog.filterindex = 1

objdialog.flags = &H0200

objdialog.initialdir = "C:Documents and SettingsNovlucker"

odresp = objdialog.showopen
Rutas = objdialog.filename

Arutas = split(Rutas, " ")                       'cortamos la cadena segun espacios

For i = 1 to ubound(Arutas)                      'ubound muestra el índice más grande de un array

Msgbox Arutas(0) & Arutas(i)                     'la ruta es la suma del indice cero (carpeta contenedora) y el archivo

Next

En este caso para generar las rutas debemos de concatenar la ruta que se encuenta en en indice cero (ya que como
habíamos dicho, la primera ruta que aparece en la cadena de texto es la dirección de la carpeta contenedora) y el
nombre del archivo en cuestión, ya que de no hacer así lo único que obtendríamos sería nombres de archivos
sueltos, y nos sus rutas.

Durante el proceso he utilizado la función Ubound (upper), que junto a la función Lbound (Lower), no hacen más
que mostrar los números de índice máximo y mínimo de un array respectivamente


       by Novlucker                                                                                                       5
Tutorial básico de vbscript (Parte 5)                                                       Noviembre 2008



El resultado:




En definitiva, justamente lo que estabamos buscando.




Y bueno así termina una nueva parte de este tutorial, en este caso con la explicación de un objeto que como he
dicho, particularmente no lo utilizo, pero seguro a más de uno le parecerá interesante para hacer más didácticos sus
scripts.




     by Novlucker                                                                                                  6

More Related Content

What's hot

IntroduccióN A Visual C
IntroduccióN A Visual CIntroduccióN A Visual C
IntroduccióN A Visual C
oswchavez
 
How to Think Like a Computer Scientist
How to Think Like a Computer ScientistHow to Think Like a Computer Scientist
How to Think Like a Computer Scientist
joanem28
 
13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes
José M. Padilla
 
Slides sesion8 matlab - IF y bucles
Slides sesion8 matlab - IF y buclesSlides sesion8 matlab - IF y bucles
Slides sesion8 matlab - IF y bucles
matlab_usc
 
Taller envio de sms por código 2012
Taller envio de sms por código 2012Taller envio de sms por código 2012
Taller envio de sms por código 2012
Orlando Barcia
 
Estructuras sintácticas de los lenguaje
Estructuras sintácticas de los lenguajeEstructuras sintácticas de los lenguaje
Estructuras sintácticas de los lenguaje
Maru Ostos
 

What's hot (20)

IntroduccióN A Visual C
IntroduccióN A Visual CIntroduccióN A Visual C
IntroduccióN A Visual C
 
Jyoc java-cap04 vectores (arrays)
Jyoc java-cap04 vectores (arrays)Jyoc java-cap04 vectores (arrays)
Jyoc java-cap04 vectores (arrays)
 
How to Think Like a Computer Scientist
How to Think Like a Computer ScientistHow to Think Like a Computer Scientist
How to Think Like a Computer Scientist
 
13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes
 
Slides sesion8 matlab - IF y bucles
Slides sesion8 matlab - IF y buclesSlides sesion8 matlab - IF y bucles
Slides sesion8 matlab - IF y bucles
 
LibreríAs De Java
LibreríAs De JavaLibreríAs De Java
LibreríAs De Java
 
Comandos de java
Comandos de javaComandos de java
Comandos de java
 
Lenguaje c tarea 5
Lenguaje c tarea 5Lenguaje c tarea 5
Lenguaje c tarea 5
 
Ocho cosas que debes saber de JavaScript
Ocho cosas que debes saber de JavaScriptOcho cosas que debes saber de JavaScript
Ocho cosas que debes saber de JavaScript
 
Java básico
Java  básicoJava  básico
Java básico
 
Codigo
CodigoCodigo
Codigo
 
Taller envio de sms por código 2012
Taller envio de sms por código 2012Taller envio de sms por código 2012
Taller envio de sms por código 2012
 
PRESENTACION
PRESENTACIONPRESENTACION
PRESENTACION
 
Estructuras sintácticas de los lenguaje
Estructuras sintácticas de los lenguajeEstructuras sintácticas de los lenguaje
Estructuras sintácticas de los lenguaje
 
Funciones
FuncionesFunciones
Funciones
 
39 Php. Bucles While
39 Php. Bucles While39 Php. Bucles While
39 Php. Bucles While
 
Greenfoot 5
Greenfoot 5Greenfoot 5
Greenfoot 5
 
Manual.es
Manual.esManual.es
Manual.es
 
Cadenas
CadenasCadenas
Cadenas
 
Comandos de Java
Comandos de JavaComandos de Java
Comandos de Java
 

Viewers also liked

Quantum Matter Paper_05QM03-1329
Quantum Matter Paper_05QM03-1329Quantum Matter Paper_05QM03-1329
Quantum Matter Paper_05QM03-1329
Aniruddha Mukherjee
 
PhuongDang Resume D5
PhuongDang Resume D5PhuongDang Resume D5
PhuongDang Resume D5
Phuong Dang
 
Mindful champion(owls bennett)
Mindful champion(owls bennett)Mindful champion(owls bennett)
Mindful champion(owls bennett)
Joel Bennett
 

Viewers also liked (13)

Mike Stoever_Ecology IRP
Mike Stoever_Ecology IRPMike Stoever_Ecology IRP
Mike Stoever_Ecology IRP
 
Quantum Matter Paper_05QM03-1329
Quantum Matter Paper_05QM03-1329Quantum Matter Paper_05QM03-1329
Quantum Matter Paper_05QM03-1329
 
Xiiicavt velocidad máximaautopista
Xiiicavt velocidad máximaautopistaXiiicavt velocidad máximaautopista
Xiiicavt velocidad máximaautopista
 
PhuongDang Resume D5
PhuongDang Resume D5PhuongDang Resume D5
PhuongDang Resume D5
 
From School library to learning centre to… What are the challenges in the fut...
From School library to learning centre to… What are the challenges in the fut...From School library to learning centre to… What are the challenges in the fut...
From School library to learning centre to… What are the challenges in the fut...
 
Top Quotes for mothers day
Top Quotes for mothers dayTop Quotes for mothers day
Top Quotes for mothers day
 
SMAU Napoli 2016 invito Offerto da NAStartUp
SMAU Napoli 2016 invito Offerto da NAStartUpSMAU Napoli 2016 invito Offerto da NAStartUp
SMAU Napoli 2016 invito Offerto da NAStartUp
 
Supply & Demand: Making the Case for Less Content (and Big Impact)
Supply & Demand: Making the Case for Less Content (and Big Impact)Supply & Demand: Making the Case for Less Content (and Big Impact)
Supply & Demand: Making the Case for Less Content (and Big Impact)
 
Production schedule
Production scheduleProduction schedule
Production schedule
 
Band saw
Band sawBand saw
Band saw
 
Microsoft Excel 2016 - Apêndices
Microsoft Excel 2016 - ApêndicesMicrosoft Excel 2016 - Apêndices
Microsoft Excel 2016 - Apêndices
 
Preparation and Structural Properties of Aluminium Substituted Lithium Nano F...
Preparation and Structural Properties of Aluminium Substituted Lithium Nano F...Preparation and Structural Properties of Aluminium Substituted Lithium Nano F...
Preparation and Structural Properties of Aluminium Substituted Lithium Nano F...
 
Mindful champion(owls bennett)
Mindful champion(owls bennett)Mindful champion(owls bennett)
Mindful champion(owls bennett)
 

Similar to Tutorial basico de vbscript by novlucker parte5

Temas programacion java_3
Temas programacion java_3Temas programacion java_3
Temas programacion java_3
Wally IG
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1
Rokr02
 
CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)
Darwin Durand
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gio
Robert Wolf
 

Similar to Tutorial basico de vbscript by novlucker parte5 (20)

(86)resumen visual basic
(86)resumen visual basic(86)resumen visual basic
(86)resumen visual basic
 
Java script
Java scriptJava script
Java script
 
Comandos vb
Comandos vbComandos vb
Comandos vb
 
Temas programacion java_3
Temas programacion java_3Temas programacion java_3
Temas programacion java_3
 
Java con Base de Datos
Java con Base de Datos Java con Base de Datos
Java con Base de Datos
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desde
 
Conexión de Base de Datos
Conexión de Base de DatosConexión de Base de Datos
Conexión de Base de Datos
 
Guía herramientas de BD PHP
Guía herramientas de BD PHPGuía herramientas de BD PHP
Guía herramientas de BD PHP
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1
 
Cplus
CplusCplus
Cplus
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)
 
1 -programacion_oo
1  -programacion_oo1  -programacion_oo
1 -programacion_oo
 
Guia herramientas de bd
Guia herramientas de bdGuia herramientas de bd
Guia herramientas de bd
 
My Sql A C#
My Sql A C#My Sql A C#
My Sql A C#
 
My Sql A C#
My Sql A C#My Sql A C#
My Sql A C#
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gio
 
Traduccion capitulo 9 (completo)
Traduccion capitulo 9 (completo)Traduccion capitulo 9 (completo)
Traduccion capitulo 9 (completo)
 
Bases de datos con java
Bases de datos con javaBases de datos con java
Bases de datos con java
 

Recently uploaded

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Recently uploaded (12)

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 

Tutorial basico de vbscript by novlucker parte5

  • 1. Tutorial básico de vbscript (Parte 5) Noviembre 2008 CommonDialog El objeto commondialog sirve para mostrar un mensaje de abrir/guardar como. En mi caso particularmente no hago uso de este objeto, pero puede resultar últil para quienes quieran agregar un poco más de interactividad a sus scripts, y de cierto modo, hacer más sencillo el uso de este para el “usuario final”. Para el uso de esta ventana, solo será necesario pasarle ciertos parámetros para hacer uso de la misma, inicializandolo por medio de useraccounts.commondialog. Nota: Este objeto solo se encuentra presente en Win XP, no antes, y en Vista se he eliminadoexiste otro objeto que se inicia con mscomdlg.commondialog, y que cumple una función similar pero con más opciones, pero este último, solamente esta disponible para las pc con VB Los parámetros que se deben de pasar a este objeto son: Filtros: Filter Indice de filtros: Filterindex Directorio inicial: InitialDir Opciones: Flags Luego de seleccionados los parámetros de la ventana, podremos mostrala por medio de la función Showopen y obtendremos la ruta por medio de Filename El primero de los parámetros, Filter, hace referencia a los tipos de archivos que van a aparecer en el cuadro. Filterindex determina cual de los tipos de archivos seleccionados (Filter) son los que van a aprecer por defecto. Initialdir es el directorio raíz que va a aparecer por defecto (de cualquier manera se podrá subir por el directorio) Y Flags son algunas opciones extras que se pueden seleccionar a la hora de mostrar la ventana (en este caso solo mostraré una de ellas) Dado que este objeto es de fácil utilización, pasaré directamente a un ejemplo, donde explicaré un poco mejor cada uno de estos parámetros. Ejemplo: Set objdialog = createobject("useraccounts.commondialog") objdialog.filter = "VBScript|*.vbs|Javascript|*.js" objdialog.filterindex = 1 objdialog.initialdir = "C:Documents and SettingsNovlucker" odresp = objdialog.showopen If odresp = -1 then Msgbox objdialog.filename End If by Novlucker 1
  • 2. Tutorial básico de vbscript (Parte 5) Noviembre 2008 El resultado: Pasemos ahora a repasar cada una de las opciones que hemos pasado. objdialog.filter = “VBScript|*.vbs|Javascript|*.js” Como había comentado, a través de los filtros, podremos determinar, cuales serán los tipos de archivos que aparecerán al visualizar los diferentes archivos de una carpeta. En el ejemplo, he puesto archivos vbscript, y javascripts. El “tipo de archivo” en palabra (VBScript y Javascript) no hace ningún tipo de diferencia, sino que se trata simplemente de lo que servirá como referencia para el usuario, es decir, podríamos poner cualquier cosa y el resultado final sería el mismo, como ejemplo: objdialog.filter = “Archivos vbs|*.vbs|Archivos javascript|*.js” Lo que si hace la diferencia, es el asterísco seguido de la extensión del archivo que se mostrará, para el ejemplo, *.vbs, y *.js. Para el caso de querer establecer “todos los archivos”, se utilizará algo del estilo “All Files|*.*” Notese además que cada uno de estos valores va separado del siguiente, por medio de un simbolo “pipe” (generalmente utilizado en distintos lenguajes para la canalización de órdenes) by Novlucker 2
  • 3. Tutorial básico de vbscript (Parte 5) Noviembre 2008 Como habíamos dichio antes Filterindex determina el tipo de archivo por defecto que será mostrado, en este caso he elegido el index 1, que en el Filter serían los archivos vbs, de haberse elegido 2, lo que se mostraría primero sería javascript y no vbs. objdialog.initialdir = “C:Documents and SettingsNovlucker” Como había dicho antes, initialdir establece el directorio en el cual se “abrirá” nuestra ventana, en este caso he establecido el directorio “C:Documents and SettingsNovlucker”, y como se puede apreciar en la imagen, esto es lo que se ha mostrado en la ventana, claro está que igualmente se podrá “subir” partiendo de este. Con esto básicamente establecemos las opciones básicas de nuestra ventana, para luego mostrarla en la línea siguiente. odresp = objdialog.showopen Como se puede ver, he asignado la “respuesta” de este elemento a la variable odresp, lo cual es totalmente opcional (podría hacerse sin el “odresp =”), pero nos permitirá determinar de manera más exacta, que es lo que pasa con nuestra ventana, ya que esta variable podrá tener dos valores según el usuario elija algún archivo y de a ACEPTAR (valor -1), o bien no seleccione ninguno y presione CANCELAR (valor 0). Es por eso que en nuestro ejemplo utilizamos un condicional IF para determinar cual ha sido la acción que se ha tomado respecto a nuestra ventana, en caso de haberse elegido un archivo, mostramos su ruta (filename). Luego de accedido a la ruta del archivo en cuestión, es decisión nuestra lo que se haga con esta ruta, ya sea copiar, mover, abrir, etc, siempre dentro de las posibilidades de vbs claro está. Cual es la limitación de esta ventana así como está? Que no es posible la selección de múltiples archivos, sino que siempre se nos permitirá elegir uno y solo uno de todos los que aparecen. Para solucionar esto utilizaremos el parámetro flags, el cual entre otras opciones controla la posibilidad de mostrar un cuadro como el que necesitamos (se tratará solamente esta, aunque existen muchas otras). Para esto, se pasará &H0200 como valor a este parámetro (siguiendo con el ejemplo anterior): Ejemplo: Set objdialog = createobject("useraccounts.commondialog") objdialog.filter = "VBScript|*.vbs|Javascript|*.js" objdialog.filterindex = 1 objdialog.flags = &H0200 objdialog.initialdir = "C:Documents and SettingsNovlucker" odresp = objdialog.showopen by Novlucker 3
  • 4. Tutorial básico de vbscript (Parte 5) Noviembre 2008 El resultado: Como se puede ver, el aspecto de nuestra ventana ha cambiado, es un poco más “rústica”, pero igualmente cumple la misma función. La particularidad de los datos que nos devuelve esta ventana con respecto a la anterior, es que dado que se seleccionan múltiples archivos, esta nos devolverá todos los valores en una misma cadena, partiendo del ejemplo anterior, en el caso de haber elegido los archivos “Script1.vbs” y “Script2.vbs”, el resultado sería el siguiente: C:DOCUME~1NOVLUC~1Script1.vbs Script2.vbs En la imagen se ve claramente como las rutas de ambos archivos que hemos seleccionado aparecen en una misma cadena, además de que dichas rutas se muestran en formato “corto”. Pero si miramos detenidamente, podemos ver que cada una de estas rutas, esta separada por un espacio, donde la primera parte contiene la ruta a la carpeta contenedora, y el resto son los archivos en cuestión. Habiendo visto esto entonces, podremos escribir un método para crear facilmente las rutas a estos archivos, para lo cual haremos uso de la función split. Split es una función de vbs que no hace más que “cortar” una determinada cadena, tomando como separador el/los caractéres que le indiquemos, y guarda en un array cada una de las partes de dicha cadena. by Novlucker 4
  • 5. Tutorial básico de vbscript (Parte 5) Noviembre 2008 Ejemplo: CadenaTexto = "1;2;3;4;5" CTtoAray = split(CadenaTexto,";") 'Cortamos la cadena con ; como separador For each C in CTtoAray Msgbox C Next Como se puede ver en el ejemplo, con una cadena definida, hemos cortado esta cadena utilizando split, y hemos guardado cada uno de los valores dentro de un array para luego acceder del modo tradicional. Veamos ahora entonces como podemos utilizar esta función para obtener las direcciones de los múltiples archivos seleccionados mediante nuestra ventana. Como habíamos dicho, los archivos son mostrados en una única cadena pero separados por espacios, por lo que para poder obtener las rutas simplemente deberemos utilizar la anterior función, pero utilizando como separador, no una cadena, sino un espacio. Una vez más siguendo con el ejemplo anterior, el proceso sería más o menos así: Set objdialog = createobject("useraccounts.commondialog") objdialog.filter = "VBScript|*.vbs|Javascript|*.js" objdialog.filterindex = 1 objdialog.flags = &H0200 objdialog.initialdir = "C:Documents and SettingsNovlucker" odresp = objdialog.showopen Rutas = objdialog.filename Arutas = split(Rutas, " ") 'cortamos la cadena segun espacios For i = 1 to ubound(Arutas) 'ubound muestra el índice más grande de un array Msgbox Arutas(0) & Arutas(i) 'la ruta es la suma del indice cero (carpeta contenedora) y el archivo Next En este caso para generar las rutas debemos de concatenar la ruta que se encuenta en en indice cero (ya que como habíamos dicho, la primera ruta que aparece en la cadena de texto es la dirección de la carpeta contenedora) y el nombre del archivo en cuestión, ya que de no hacer así lo único que obtendríamos sería nombres de archivos sueltos, y nos sus rutas. Durante el proceso he utilizado la función Ubound (upper), que junto a la función Lbound (Lower), no hacen más que mostrar los números de índice máximo y mínimo de un array respectivamente by Novlucker 5
  • 6. Tutorial básico de vbscript (Parte 5) Noviembre 2008 El resultado: En definitiva, justamente lo que estabamos buscando. Y bueno así termina una nueva parte de este tutorial, en este caso con la explicación de un objeto que como he dicho, particularmente no lo utilizo, pero seguro a más de uno le parecerá interesante para hacer más didácticos sus scripts. by Novlucker 6