Top Banner
VISUAL BASIC SCRIPT MANUAL BASICO
21

Visual Basic Script

Jun 26, 2015

Download

Documents

thedamned

Visual Basic Script
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Visual Basic Script

VISUAL BASIC SCRIPT

MANUAL BASICO

Page 2: Visual Basic Script

Índice de contenidos1.Introducción a Visual Basic Script....................................................................................................32.Creación de archivos.........................................................................................................................43.Creación de variables........................................................................................................................44.Estructuras de control........................................................................................................................75.Funciones Gráficas..........................................................................................................................106.Funciones básicas............................................................................................................................167.Programas........................................................................................................................................20

Page 3: Visual Basic Script

1.Introducción a Visual Basic Script.Hace unos 19 años, el proceso de construir una simple aplicación basada en Microsoft Windows se habría podido describir como complicado, difícil y largo. Construir estas aplicaciones ricas en gráficos no era un proceso trivial antes de la introducción de Visual Basic 1.0 en mayo de 1991. Con Visual Basic, los programadores podían, por primera vez, implementar aplicaciones de Windows en un ambiente intuitivo y gráfico, simplemente arrastrando controles sobre un formulario. Haciendo posible a los programadores profesionales y a los ocasionales maximizar su productividad, Visual Basic conllevó un renacimiento del desarrollo de aplicaciones basadas en Windows.

Visual Basic Script es un lenguaje interpretado por el Windows Scripting Host de Microsoft. Su sintaxis refleja su origen como variación del lenguaje de programación Visual Basic. Ha logrado un apoyo significativo por parte de los administradores de Windows como herramienta de automatización, ya que, conjunta y paralelamente a las mejoras introducidas en los sistemas operativos windows donde opera fundamentalmente, permite más margen de actuación y flexibilidad que el lenguaje batch (o de proceso por lotes) desarrollado a finales de los años 1970 para el MS-DOS.

Visual Basic Script es interpretado por el motor de scripting vbscript.dll, que puede ser invocado por el motor ASP asp.dll en un entorno web, por wscript.exe en un entorno Windows de interfaz gráfica, por cscript.exe es un entorno de línea de comandos y por iexplore.exe cuando se trata de scripts a nivel de cliente (similar al javascript). Cuando el código fuente se guarda en ficheros independientes, éstos tienen típicamente la extensión .vbs.

Cuando se emplea en Internet Explorer, funciona de forma muy similar a JavaScript, procesando código contenido en el documento HTML. También puede usarse para crear aplicaciones HTML independientes (extensión .hta), que necesitan Internet Explorer 5.0 o superior para poder ser ejecutados. Los desarrolladores de aplicaciones en web suelen preferir JavaScript debido a su mayor compatibilidad con otros navegadores de Internet, ya que Visual Basic Script sólo está disponible para el navegador de Microsoft Internet Explorer, y no en otros como Firefox u Opera.

Es el lenguaje usado para escribir algunos famosos gusanos de red, como I Love You. Esto se debe a varias razones. Primero, el icono parecido a un pergamino azul que representa a los ficheros .vbs puede llevar a pensar a los usuarios inexpertos que se trata de un fichero de texto. Segundo, es fácil escribir un gusano informático en Visual Basic Script que se propague por correo electrónico (se necesitan pocas líneas de código). Microsoft ha solucionado los agujeros de seguridad explotados por dichos programas maliciosos. Este solucionado no significa erradicado, solo ha complicado el proceso; pues si por ejemplo el I Love You se propagaba a través del Outlook, ahora si se utiliza el mismo método sale un mensaje de advertencia, por lo que se suele emplear métodos como el envío mediante un servidor smtp (bastante más complejo de programar que por el otro método).

En general es uno de los lenguajes más básicos y es, sin duda alguna, la base del Visual Basic 6, ya que todo lo que se aprende aquí, luego puede ser usado en él sin ningún cambio. En otras palabras, es el lenguaje que se suele aprender antes del Visual Basic 6. Es por eso que todo programador de Visual Basic que se precie debe conocerlo.

Page 4: Visual Basic Script

2.Creación de archivos.Los archivos se crean con el bloc de notas, o con cualquier otro editor de texto, siempre que luego se guarde con la extensión .vbs. Una vez abierto el archivo, se escribe el código de forma ordenada. El código se ejecuta desde el principio hasta el final, salvo en caso de bucles, condicionales y funciones personalizadas. Hay programas en vbscript que no tienen efecto visual, ya que operan de forma interna, y "programas visuales", ya que interactuan con el usuario a través de una ventana.

3.Creación de variables.Existen dos métodos para usar las variables en VBScript, uno mas "libre" y otro mas similar a los demás lenguajes. Dejaremos de lado el libre y veremos el más común. Este se activa colocando en la primera línea la función siguiente:

Option ExplicitY, luego, en el momento que se quiera crear una variable se utiliza la palabra Dim, seguido del nombre identificativo que le queramos dar. Por ejemplo:

Option ExplicitDim variable1

Así habremos creado una variable con el nombre identificativo variable1. Si queremos crear más de una variable a la vez, solo hay que colocar una coma y poner luego todas las demás:

Option ExplicitDim variable1, var2, var3, nombre

Así habremos creado cuatro variables con los nombres variable1, var2, var3 y nombre. Recordad que el Option Explicit solo se coloca una vez al principio del Script, pero el Dim, se puede colocar tantas veces como se quiera para crear nuevas variables a lo largo del script:

Option ExplicitDim variable1, var2'Mas funciones...Dim var3, nombre

La línea que empieza por ', es un comentario, que es ignorado por el intérpetre. Ahora vamos a ver como darles valores. Básicamente se trabaja con tres tipos de valores:

-Valores numéricos: Son valores numéricos que van desde números negativos con decimales hasta números positivos decimales. Es decir, cualquier número real que exista.-Valores alfanuméricos: Podemos introducir textos, nombres, frases, párrafos, etc. en una variable. Admite cualquier carácter (letras y números) excepto el salto de línea y la doble comilla, que se introducen de forma especial.-Valores booleanos: Son valores que indican si es verdadero o falso. Podemos darle a una variable el valor True o false.

Una vez tenemos una variable creada, podemos introducirle un valor. Veamos primero como introducimos valores numéricos, que son, los mas sencillos de usar y entender. Para darle el valor numérico a una variable, colocaremos el nombre de la variable seguido de un igual y el valor que le queramos dar (si el numero es decimal se colocará entre comillas, aunque es mejor ponerlo en forma de fracción). Por ejemplo:

Option ExplicitDim varPivarPi = 3

Page 5: Visual Basic Script

Con variables numéricas se pueden realizar operaciones aritméticas. A las variables se les puede dar como valor el resultado de una operación:

varPi = (7*2)+1De esta forma, por ejemplo, varPi obtendrá el valor 15. También se pueden usar otras variables en las operaciones:

var1 = (7*2)+1var2 = 7*(2/3)var3 = var1 + var2var4 = (1/2)* var3

Para asignar el valor de una variable a otra:var1 = (7*2)+1var2 = 7*(2/3)var2 = var1

Para incrementar el valor de una variable:var1 = 15var1 = var1 + 1'Mas código y funcionesvar1 = var1 + 1

Otro tipo de datos que se pueden introducir son cadenas de texto. Hay que tener en cuenta que estos datos no se pueden mezclar con los numéricos, porque no son del mismo tipo. Al igual que con los datos numéricos, se asigna mediante el uso del símbolo igual, pero en este caso, el texto debe ir entre comillas:

var1 = "Hola Mundo"Existe un operador especial para cadenas, denominado concatenador de cadenas (&). Su función es unir cadenas de texto. Por ejemplo:

nombre = "mun"texto = "Hola " & nombre & "do"

Para introducir comillas, salto de línea, etc... en las variables, se dispone de tres funciones:

-vbCrLf. Esta función devuelve el valor de un salto de línea, permitiéndonos almacenarlo en una variable. Por ejemplo:

var1 = "Nombre: Jose" & vbCrLf & "Apellidos: Sanchez Olmedo"Esto dará como resultado lo siguiente:

Nombre: JoseApellidos: Sanchez Olmedo

-Chr. Esta función recibe un código en ASCII, y devuelve su carácter correspondiente. Sabiendo que el codigo ASCII de las comillas es el 34:

var1 = "Mi nombre es " & Chr(34) & "Jose" & Chr(34) & "."Esto dará como resultado lo siguiente:

Mi nombre es "Jose".-El Asc. Esta función recibe un carácter entre comillas y devuelve el codigo ASCII correspondiente:

var1 = Asc("a")Se asigna a var1 el valor 97. Se utiliza, sobre todo, para la encriptación de datos.

Otro tipo de valor a utilizar en variables es el booleano. Con esto se asigna true (verdadero) o false (falso) a una variable:

var1 = falsevar2 = true

Page 6: Visual Basic Script

Mediante los operadores lógicos también se pueden realizar operaciones con las variables. Son los que siguen:

-And. El operador And (adición) trabaja con dos operadores (true y false), y devuelve un valor que puede ser true o false según los operadores participantes:

TRUE AND TRUE = TRUETRUE AND FALSE = FALSEFALSE AND TRUE = FALSEFALSE AND FALSE = FALSE

En la siguiente operación, el resultado de var2 sería False:var1 = falsevar2 = (true And false) And var1

-Or. El operador Or (disyunción) trabaja con dos operadores (true y false), y devuelve un valor que puede ser true o false según los operadores participantes:

TRUE OR TRUE = TRUETRUE OR FALSE = TRUEFALSE OR TRUE = TRUEFALSE OR FALSE = FALSE

Para el ejemplo anterior, con el Or, el resultado de var2 sería True:var1 = falsevar2 = (true Or false) Or var1

-Xor. El operador Xor (disyunción exclusiva) trabaja con dos operadores (true y false), y devuelve un valor que puede ser true o false según los operadores participantes:

TRUE XOR TRUE = FALSETRUE XOR FALSE = TRUEFALSE XOR TRUE = TRUEFALSE XOR FALSE = FALSE

-Not. El operador Not (negación) trabaja con un solo operando (true o false), devolviendo el valor contrario del operando que le sigue. En el ejemplo siguiente, devolverá False:

var1 = Not true-Eqv. El operador Eqv realiza la equivalencia lógica de dos valores booleanos. Devuelve un valor que puede ser true o false según los operadores participantes:

TRUE EQV TRUE = TRUETRUE EQV FALSE = FALSEFALSE EQV TRUE = FALSEFALSE EQV FALSE = TRUE

-Imp. El operador Imp realiza la implicación lógica de dos valores booleanos. Se utiliza igual que el Eqv, pero los valores que devuelve vienen dador por la siguiente tabla:

TRUE IMP TRUE = TRUETRUE IMP FALSE = FALSEFALSE IMP TRUE = TRUEFALSE IMP FALSE = TRUE

Page 7: Visual Basic Script

4.Estructuras de control.Son varias las funciones que nos permiten controlar el flujo de un programa:

-If. Es una sentencia condicional, ya que se encarga de evaluar una expresión. Según se cumpla o no, ejecutará la acción correspondiente. Por ejemplo:

If var1 = 0 Then'Acción a realizar si la condición se cumple

Else'Acción a realizar si la condición no se cumple

End IfSi var1 es igual a 0, se llevan a cabo una serie de acciones. Si ésto no se cumple, se ejecutarán otras. If indica el inicio de la condicional, con una expresión que indica la condición, seguida de Then, que indica la ejecución de unas funciones si la expresión es verdadera. Else, se traduce como 'si no', con lo que si no se cumple la primera condición, se llevará a cabo la que sigue al else. End If indica el final de la sentencia.

Además del signo igual, existen otros operadores relacionales que pueden utilizarse al establecer una condición. Operadores como mayor que ( > ), menor que ( < ), menor o igual que ( <= ), mayor o igual que ( >= ) y distinto de ( <> ).

También es posible introducir condicionales dentro de condicionales:If variable = 0 Then

'Acción a realizar si la condición 1 se cumpleElse

If variable > 0 Then'Acción a realizar si la condición 2 se cumple

Else' Acción a realizar si la condición 2 no se cumple

End IfEnd If

El código anterior se puede explicar así: si variable es igual a 0, se lleva a cabo la acción que sigue a la misma línea de la condición. En caso contrario, se ejecuta el cuerpo del else, que a su vez incluye otra condición, en la cual, si variable es mayor que 0, se ejecuta la acción que sigue a la línea de la condición, mientras que, si no se cumple, se lleva a cabo la acción que sigue al else de esta última condición.

En cuanto a formas más simples de utilizar if, existen un par de ellas. La primera es cuando sólo se pretende realizar alguna acción siempre que la condición se cumpla:

If var1 = 0 Then' Acción a realizar si la condición se cumple

End ifCon esto prescindimos de realizar alguna acción si la condición no se cumple. La segunda forma es similar a la anterior, pero incluyendo todo el código en una sola línea:

If var1 = 0 Then var2 = true

Page 8: Visual Basic Script

-Do…Loop Until. La sentencia Do...Loop Until define un bucle infinito, que se ejecutará hasta que la condición especificada se cumpla:

Do‘Cuerpo a ejecutar hasta que variable sea igual a 1.

Loop Until Variable="1"Do indica el comienzo del bucle. Seguidamente se colocan las instrucciones a realizar hasta que la condición se cumpla. Loop se traduce como "salto", esto es, indica que se vuelva al punto donde esta Do. A la derecha de Loop se coloca Until y el nombre de una variable seguido de un operador de comparación (Igualdad (=), Desigualdad (<>), Menor que (<), Mayor que (>), Menor o igual que (<=) o Mayor o igual que (>=)) y una expresión que hará que si se cumple, se salga del bucle y se continúe la ejecución del script. Un ejemplo de uso de la sentencia Do con las variables seria el siguiente:

Option ExplicitDim Var1Variable = 1Do

var1=var1+1Loop Until variable = "6"

A var1 se le asigna el valor 1. Tras iniciar el bucle, en cada vuelta se le va a sumar uno a var1. Tras cinco vueltas, el valor de var1 es igual a 6, por lo que el bucle termina.También es posible ubicar un bucle dentro de otro, o un bucle dentro de una sentencia If, o la sentencia If en el bucle, etc…

-For…Next. La sentencia For...Next, crea un bucle a partir de una variable númerica, tomando como valor de inicio el de la misma variable, teniendo un incremento determinado (Step) en cada vuelta, y terminando el bucle tras llegar a un determinado valor (To):

For var1 = 0 To 10 Step 2‘Acción a realizar

NextEl bucle se repite hasta que variable tome el valor 10, sumando automáticamente 2 cada vez que el bucle se va a repetir.For va seguido del nombre de una variable, a la cual se le asigna un valor inicial A continuación colocamos la partícula To seguida de un valor final, que hará que el bucle se detenga al alcanzarlo. Luego va la partícula Step, que indica el incremento de var1 en cada iteración. Next hace retornar el bucle a la partícula For y añade a var1 el valor de Step. Si al llegar aquí el valor de la variable es mayor que el final el bucle se romperá. Un ejemplo de uso de esta sentencia seria el siguiente:

For var=1 To 10var2=var1 * var2

NextEn este caso, se ha omitido el Step, lo cual le indica que el paso es de 1. El bucle se repetiría 10 veces. En el siguiente ejemplo, se ha colocado un bucle for dentro de otro:

For variable=1 to 10‘Accion a repetir 10 veces.For variable2=1 to 2

‘Acción a repetir 20 veces.Next

NextTeniendo en cuenta que el bucle principal se repite diez veces y el secundario se repite dos veces, el secundario, en realidad, se repetirá un total de veinte veces.

Page 9: Visual Basic Script

-Function. La sentencia Function sirve para crear una función personalizada a partir de otras funciones simples, que puede ser llamada desde cualquier parte del código. Se expresa de la siguiente forma y se coloca generalmente al principio o al final del script, por convención:

Function nombre_funcion(variables)‘Funciones simples

End FunctionDonde nombre_funcion es el nombre que le queremos dar a la función, y variables son las variables que operaran en ella, a las que les daremos un valor al llamar a la función. Con esto lo que se quiere decir es que una función jamás se va a ejecutar a no ser que se la llame.La forma de llamar a una función es la que sigue:

Variable = nombre_función(variable)Vamos a ver un ejemplo para mayor claridad:

Variable = 2Function Incrementar(numero)

Incrementar = numero + 1End FunctionVariable 2 = VariableVariable = Incrementar(Variable2)

Como veis, hemos puesto la sentencia en medio del código, pero esto es indiferente pues no se ejecutará. Aun así lo más correcto habría sido ponerla al principio o al final, como se muestra a continuación:

Variable = 2Variable2 = Variable -1Variable = Incrementar(Variable2+Variable)

Function Incrementar(numero)Incrementar = numero + 1

End FunctionA Variable se el asigna el valor 2, y a Variable2 el valor 1. Variable recibe la función Incrementar, a la que se le envía el resultado de una suma. Tras ésto, la función incrementar devuelve a Variable el valor 4, que es el resultado final. Aquí tenemos otro ejemplo con for:

Variable = 0Variable2 = 100For x = 1 To 50

Variable = Incrementar(Variable)Variable2 = Decrecer (Variable2)

Next

Function Incrementar(numero)Incrementar = numero + 1

End Function

Function Decrecer(numero)Decrecer = numero - 1

End FunctionEn este caso tenemos dos funciones, y el código en general lo que haría sería dar a Variable el valor 0 y a Variable2 el valor 100, y luego repetir 50 veces un bucle donde la priemera se incrementa y la segunda decrece.

Page 10: Visual Basic Script

Pero una función, además de recibir una variable, puede recibir varias, lo que incrementa las posibilidades algorítmicas. Veamos un ejemplo:

Variable = 0For x = 1 To 100

If Variable <= 50 thenVariable = matematicas(Variable, True, 2)

ElseVariable = matematicas(Variable, False, 1)

End ifNext

Function matematicas(numero,modo,valor) If modo = True Then

matematicas = numero + valorElse

matematicas = numero - valorEnd If

End FunctionInicialmente Variable tiene el valor 0. Se tiene un bucle for que se ejecuta 100 veces. Si Variable es menor o igual que 50, se llama a la función matemáticas, pasándole una serie de argumentos con una serie de valores, e igualmente en caso contrario, también se llamará a la función matemáticas, pasándole una serie de argumentos con otros valores distintos. La función matemáticas cumple el siguiente cometido: si el modo recibido es True, suma al número recibido el valor recibido, y si el modo recibido es False, resta al número recibido el valor recibido. Los argumentos que recibe la función matemáticas son, por tanto, tres, y van separados por comas. El primero de ellos es numérico, el segundo es de tipo booleano, y el tercero es también de tipo numérico.

5.Funciones Gráficas.Las funciones gráficas son principalmente dos, el cuadro de mensaje y el cuadro de diálogo, y sirven para mostrar la información en pantalla, y/o interactuar con el usuario dejando que sea él que introduzca la información.

-Función MsgBox. Como su nombre indica (MessageBox), crea un cuadro de mensaje como los que se pueden ver a continuación:

En el cuadro de mensaje se puede modificar el texto que va en la barra de título, la imagen de la izquierda y los botones que aparecen. El cuadro de mensaje se asocia a una variable, en la cual se determinará, por ejemplo, cual de los botones se ha pulsado.Un cuadro de mensaje básico se crea con el siguiente código, siendo el más simple de todos:

Var1 = MsgBox("Mensaje",varios_parámetros,"Título")Var1 es la variable a la que se asigna el MsgBox, la cual recibe la información sobre el botón pulsado, Mensaje es el mensaje que se muestra en el cuadro, siendo Título el texto a colocar en la barra de título. En varios parámetros, se indica la imagen, el numero de botones, el botón predeterminado y el tipo de mensaje. Estos valores se pueden indicar mediante un número,varios, o mediante el nombre que se le atribuye a éste o a éstos.

Page 11: Visual Basic Script

Si en el Mensaje se quiere colocar comillas, saltos de línea o una referencia a otra variable, hay que realizarlo uniendo las expresiones con el símbolo de concatenación (&) de la siguiente manera:

Variable = MsgBox("Mensaje"&chr(13)&"Mensaje2",0,"Titulo")

En esta ventana, se tiene primero Mensaje, concatenado mediante & con un salto de de línea, y a su vez concatenado mediante & con Mensaje2. El 0 indica un tipo de botón normal, mientras que Titulo es el texto a indicar en la barra de título.

Variable = MsgBox("Mensaje"&chr(34)&"Mensaje2"&chr(34),0,"Titulo")

Aquí tenemos Mensaje, concatenado mediante & con el carácter comillas dobles, a su vez concatenado con & a Mensaje2, que vuelve a concatenarse con el carácter comillas dobles, lo que hace que Mensaje2 se muestre entre comillas en el cuadro de texto.

Variable2 = 2Variable = MsgBox("Mensaje "&Variable2,0,"Titulo")

En este caso, se asigna a Variable2 el valor 2. Mensaje se concatena mediante & con el valor de Variable2. En el cuadro se muestra Mensaje seguido del valor de Variable2.

El segundo parámetro que recibe el MsgBox es un número, el cual determina la imagen, el número de botones, el botón predeterminado y el tipo de mensaje. A su vez, cada opción correspondiente a las características mencionadas se corresponde con un número. De forma que la suma de todos los números de todas las opciones a utilizar, es el número que hay que indicar como parámetro. A su vez, a cada número le corresponde un nombre de constante, de forma que también será posible indicar todas estas características concatenándolas mediante el carácter +. Se muestran las tablas con las correspondientes equivalencias para botones, iconos, etc.

BOTONESNombre Constante Valor Botones a mostrar

vbOKOnly 0 Sólo el botón AceptarvbOKCancel 1 Aceptar y Cancelar

vbAbortRetryIgnore 2 Anular, Reintentar e IgnorarvbYesNoCancel 3 Sí, No y Cancelar

vbYesNo 4 Sí y NovbRetryCancel 5 Reintentar y Cancelar

ICONOSNombre Constante Valor Icono a mostrar

vbCritical 16 Mensaje críticovbQuestion 32 Consulta de advertencia

vbExclamation 48 Mensaje de advertenciavbInformation 64 Mensaje de información

Page 12: Visual Basic Script

BOTÓN POR DEFECTONombre Constante Valor Botón predeterminadovbDefaultButton1 0 El primer botónvbDefaultButton2 256 El segundo botónvbDefaultButton3 512 El tercer botónvbDefaultButton4 768 El cuarto botón

CUADROS DE DIÁLOGONombre Constante Valor Tipo de cuadrovbApplicationModal 0 Cuadro de diálogo modal de la

aplicación. El usuario debe responder al cuadro de diálogo antes de continuar trabajando

en la aplicación actual.vbSystemModal 4096 Cuadro de diálogo modal del

sistema. Se suspenden todas las aplicaciones hasta que el

usuario responda al cuadro de mensaje.

Para crear un cuadro de mensaje con los botones Sí y No, añadiendo, además, el icono de informa- ción y dejando el botón No como predeterminado, se tendría que indicar:vbYesNo 4vbInformation 64vbDefaultButton2 256Lo cual a la hora de crear el mensaje, se puede hacer de dos formas:-Primera. Sustituyendo los numeros anteriores por su suma:Variable = MsgBox("Mensaje",324,"Titulo")-Segunda. Colocando los nombres de constantes concatenados mediante el carácter +.Variable = MsgBox("Mensaje",vbYesNo+vbInformation+vbDefaultButton2,"Titulo")Con lo que tendremos el siguiente cuadro de Mensaje:

Como ya se ha comentado anteriormente, la función MsgBox va siempre asignada a una variable, en la cual se recoge el resultado de la operación efectuada con dicha función, esto es, se asigna el valor correspondiente al botón pulsado. Por lo tanto, es necesario saber que valores estan asociados a los distintos tipos de botón que se pueden utilizar, lo cual se indica en la siguiente tabla.

Page 13: Visual Basic Script

VALORES ASOCIADOS A LOS BOTONES

Botón pulsado Valor que recibe la variable

Aceptar 1Cancelar 2Anular 3

Reintentar 4Ignorar 5

Sí 6No 7

Sabiendo ésto, se amplian las posibilidades a la hora de realizar scripts, como se puede ver en el siguiente ejemplo:

Variable = MsgBox("¿Es muy tarde?",324,"VBScript")If Variable = 6 Then

Variable2 = MsgBox("¡Parece que sí!",0,"VBScript")Else

Variable3 = MsgBox("¡Menos mal!",0,"VBScript")End If

Tras ejecutarlo, nos muestra el siguiente cuadro de mensaje:

Si pulsamos Sí, el if comprobará que efectivamente, el valor devuelto por la función MsgBox es el 6, lo que hara que se muestre la siguiente cuadro de mensaje:

Tras lo cual, al pulsar aceptar, el programa habrá terminado. Si en vez de pulsar Sí, se hubiese pulsado No, la condición impuesta por el if no se cumpliría, ya que el valor que devuelve el botón No es el 7. De esta forma, el cuadro de mensaje a mostrar sería el incluido en el cuerpo del else:

Tras lo cual, al pulsar aceptar, el programa termina.

Page 14: Visual Basic Script

-Función InputBox. También denominado cuadro de diálogo, crea una ventana en la que se tiene un cuadro de texto y los botones aceptar y cancelar:

El cuadro de diálogo o InputBox, al igual que el cuadro de mensaje dispone de un mensaje a mostrar, que por lo general es una pregunta, el texto que se coloca en la barra de título, y el texto que se puede colocar por defecto, en el cuadro de texto, además de la posición en la pantalla donde puede aparecer la ventana, mediante los parámetros x e y. Por otro lado, el cuadro de diálogo va también unido a una variable, que recibirá la respuesta.El siguiente código crea un cuadro de diálogo básico, en el que no se determina su posición en pantalla:Variable = InputBox("Pregunta","Título","Introduzca aquí su respuesta")A Variable se le asigna el valor que devuelve el InputBox. La Pregunta del InputBox es el mensaje que se muestra en el cuadro de diálogo, Título del InputBox es el texto a colocar en la barra de título e Introduzca aquí su respuesta, es el valor que se ha indicado por defecto para el cuadro de texto. Por tanto, esta función básica recibe tres parámetros.Para colocar un salto de línea, comillas, o una referencia a otra variable, se realiza uniendo las expresiones mediante el símbolo de concatenación (&):Var1 = InputBox("Pregunta"&chr(13)&"Mensaje2","Titulo","Introduzca respuesta")

Var1 = InputBox("Pregunta"&chr(34)&"Mensaje2"&chr(34),"Titulo","Introduzca respuesta")Var2 = 2

Var1 = InputBox("Pregunta "&Var2,"Titulo","Introduzca respuesta")

Page 15: Visual Basic Script

Para establecer una posición en la pantalla para el cuadro, se utiliza este esquema:Variable = InputBox("Pregunta","Titulo","Introduzca respuesta",x,y)El parámetro x se indica con un número, que especifica, en twips, la distancia horizontal del borde izquierdo del cuadro de diálogo respecto al borde izquierdo de la pantalla. Si no se indica, el cuadro de diálogo se centra horizontalmente. El parámetro y se indica con un número, que especifica, en twips, la distancia vertical del borde superior del cuadro de diálogo hasta la parte superior de la pantalla. Si no se indica, el cuadro de diálogo se sitúa verticalmente a una distancia aproximada de un tercio de la parte inferior de la pantalla.En el ejemplo anterior, Variable guardaría la respuesta enviada, incluso si no se ha escrito nada o se pulsa cancelar, almacenando, con ésto, una cadena de longitud cero ("").Aquí tenemos un ejemplo combinado con un MsgBox, el cual devuelve lo que se ha introducido en el InputBox como respuesta:Variable = InputBox("¿Que bebida te gusta?","Bebida","Introduce bebida")Variable2 = MsgBox("Te gusta: "&Variable,0,"Bebida") Tras ejecutar el script se tiene:

Tras introducir la bebida y pulsar aceptar...

...muestra la bebida que se ha introducido en el cuadro de texto del InputBox.

Vamos a ver otro ejemplo, alternando entre tres posibles respuestas, en el que, mientras no se responde a una de las tres opciones solicitadas, el programa seguirá funcionando. Todo ello gracias al uso de las sentencias if y Do:Do Variable = InputBox("Elige: whisky, cerveza o vino","Bebida","Respuesta") If Variable="whisky" Then Variable2="ok" End If If Variable="cerveza" Then Variable2="ok" End If If Variable="vino" Then Variable2="ok" End IfLoop Until Variable2 = "ok"

Page 16: Visual Basic Script

Se ha creado un bluce Do...Loop Until, de forma que si no se introduce alguna de las opciones indicadas, el programa continuará ejecutandose ininterrumpidamente. Tras introducir alguna de las opciones posibles (tal cual se muestran, en minúsculas), el programa termina.

6.Funciones básicas.Destacar las que operan con números, con cadenas, y con tiempo.

Funciones de valores numéricos. Los valores numéricos que almacenan las variables disponen de varias funciones que los pueden modificar.

-Fix. Esta función elimina la parte decimal de un número. Ejemplo:Var1 = "9,354"Var2 = Fix(Var1)

Tras pasar Var1 por la función Fix, Var2 almacena el valor de 9.

-Abs. Esta función devuelve el valor absoluto de un número. Si el número es positivo lo deja como está. Ejemplo:

Var1 = "-9,354"Var2 = Abs(Var1)

Tras pasar Var1 por la función Abs, Var2 almacena el valor de 9,354.

-Rnd. Esta función devuelve un numero aleatorio decimal (0,33), por lo que es necesario, a veces, multiplicarlo por 100 y luego aplicarle la función Fix, para obteenr un número entero. De esta forma, es posible usar una función dentro de otra. Ejemplo:

Var1 = Fix(Rnd*100)En este caso, a Var1 se le asigna un número que será el que se obtenga de multiplicar por cien el número aleatorio obtenido de la función Rnd, que a su vez perderá su parte decimal al pasar por la función Fix.

-Sgn. Esta función devuelve 1 si el signo del valor de Variable es positivo, -1 si es negativo y 0 si su valor es 0. Un ejemplo de uso de esta función es el siguiente:

Var1 = "-9,354"Var2 = Sgn(Var1)

Tras pasar Var1 por la función Sgn, Var2 almacena el valor de -1.

-Sqr. Esta función devuelve la raíz cuadrada de un número. Si el número es negativo genera un error, por lo que, para este caso, es mejor usar previamente la función Abs. Ejemplo:

Var1= "9"Var2 = Sqr(Var1)

Tras pasar Var1 por la función Sqr, Var2 almacena el valor de 3.

Page 17: Visual Basic Script

-Log. Esta función devuelve el logaritmo natural de un numero, es decir el logaritmo en base e(2,718282) de un numero. Por eso es recomendable usar una división de logaritmos para hallar logaritmos de la base que se desee siguiendo el siguiente ejemplo, donde Var1 es el numero al que se le aplica el logaritmo y 8 es la base de este (se sustituye 8 por la base deseada):

Var1 = "64"Var2 = Log(Var1) / Log(8)

Tras pasar Var1 a la función Log con base 8, Var2 tiene el valor 2.

-Sin, Cos y Tan. Estas funciones devuelven el seno, coseno y la tangente, respectivamente, de un número, el cual indica su valor, expresándolo como ángulo en Radianes. Para convertir grados en radianes, hay que multiplicar los grados por pi /180. Para convertir los radianes en grados, hay que multiplicar los radianes por 180/pi. Ejemplo:

Var1 = "3,1415926535897932"Var2 = Cos(Var1)

A Var1 se el asigna el valor pi. Tras pasar Var1 a la función Cos, Var2 recibe el valor -1.

Funciones de cadena. Se aplican a todas aquellas variables que sean de cadena, las cuales modifican sus valores tras pasar por las mismas.

-LCase. Es una función que convierte toda una cadena a minúsculas. Ejemplo:Var1 = "Hola"Var2 = LCase(Var1)

Tras pasar Var1 a la función LCase, Var2 recibe el valor de cadena "hola".

-UCase. Función que convierte toda una cadena a mayúsculas. Ejemplo:Var1 = "Hola"Var2 = Ucase(Var1)

Tras pasar Var1 a la función UCase, Var2 recibe el valor de cadena "HOLA".

-Left. Función que devuelve la extracción de un número de caracteres determinados desde la izquierda de una cadena. Por tanto, recibe dos parámetros: el primero sería la variable de cadena, y el segundo el número de caracteres a extraer. Ejemplo:

Var1 = "Matemáticas es una asignatura un poco complicada"Var2 = Left(Var1,6)

Tras pasar Var1 a la función Left, Var2 recibe el valor de cadena "Matema".

-Right. Función que devuelve la extracción de un número de caracteres determinados desde la derecha de una cadena. Por tanto, recibe dos parámetros: el primero sería la variable de cadena, y el segundo el número de caracteres a extraer. Ejemplo:

Var1 = "Matemáticas es una asignatura un poco complicada"Var2 = Right(Var1,7)

Tras pasar Var1 a la función Right, Var2 recibe el valor de cadena "plicada".

-Mid. Función que devuelve la extracción de un número de caracteres determinados desde un punto concreto de una cadena.Por tanto, recibe tres parámetros: el primero sería la variable de cadena, el segundo, el punto de la cadena a partir del cual se va a realizar la extracción, el cual puede comprender desde 1 y llegar hasta la longitud total de la cadena, y el tercero el número de caracteres a extraer. Ejemplo:

Var1 = "Matemáticas es una asignatura un poco complicada"Var2 = Mid(Var1,6,3)

Tras pasar Var1 a la función Mid, Var2 recibe el valor de cadena "áti".

Page 18: Visual Basic Script

-Len. Función que devuelve el número de caracteres que contiene una cadena. Ejemplo:Var1 = "Hoy es martes"Var2 = Len(Var1)

Tras pasar Var1 a la función Len, Var2 recibe el valor de 13.

-StrReverse. Función que invierte la posición de los caracteres de una cadena, de forma que el primero pasa a ocupar el último lugar, el último el primero, y por tanto, todos los demás establecen su posición con respecto a esta configuración. Ejemplo:

Var1 = "Hoy es martes"Var2 = StrReverse(Var1)

Tras pasar Var1 a la función StrReverse, Var2 recibe el valor de cadena "setram se yoH".

-Trim. Función que elimina los espacios en blanco que pueda haber al inicio y final de una cadena de caracteres. Ejemplo:

Var1 = " Hoy es martes "Var2 = Trim(Var1)

Tras pasar Var1 a la función Trim, Var2 recibe el valor de cadena "Hoy es martes".

-InStr. Función que busca una palabra, dentro de una cadena de texto, y devuelve el número de veces que la ha encontrado. Tiene dos modos de búsqueda: vbTextCompare, que no considera las mayúsculas, y vbBinaryCompare, que respeta las mayúsculas. Recibe 4 parametros: el primero de ellos indica el número de carácter a partir del cual se va a relizar la búsqueda, el segundo es la variable en la cual se almacena el texto en el que se va realizar la busqueda, el tercero es la palabra a buscar, y el cuarto definirá el tipo de búsqueda, con o sin mayúsculas.Ejemplo:

Var1 = "Hoy es martes"Var2 = InStr(1,Var1, "Hoy", vbBinaryCompare)

Tras pasar Var1 a la función InStr, Var2 recibe el valor de 1.

-Replace. Función que busca una palabra, dentro de una cadena de texto, y la reemplaza por otra. Como modos de búsqueda: vbTextCompare, que no considera las mayúsculas, y vbBinaryCompare, que respeta las mayúsculas. Recibe 4 parametros: el primero es la variable en la cual se almacena el texto en el que se va realizar la sustitución, el segundo es la palabra a buscar, el tercero es la palabra que va a sustituir a la palabra buscada y el cuarto definirá el tipo de búsqueda, con/sin mayúsculas. Usada también para eliminar partes o palabras de un texto, usando, como reemplazo, una cadena vacia. Ejemplo:

Var1 = "Hoy es martes"Var2 = Replace(Var1, "martes", "lunes", vbTextCompare)

Tras pasar Var1 a la función Replace, Var2 recibe el valor de cadena "Hoy es lunes".

Funciones de tiempo. Son aquellas funciones que nos permiten trabajar con la hora y fecha del sistema.

-Now. Función que devuelve la fecha y hora actuales, en cadena de texto. Ejemplo:Var1 = Now

Combinando esta función con un MsgBox, se puede ver la fecha y hora del sistema:Var1 = MsgBox(Now,0,"Fecha y hora")

Tras ejecutarlo, se obtiene la siguiente ventana:

Page 19: Visual Basic Script

Teniendo en cuenta que Now guarda la fecha y hora en formato cadena, se podrían utilizar las funciones de cadena para trabajar con ambas. Además, la función Now tiene sus propios operadores de tiempo, que la pueden modificar para que guarde sólo la hora, el minuto, el año, u otros datos concretos. En estos casos la función Now guardaría el valor como numérico y de cadena a la vez, por lo que se podría modificar con ambos operadores de numero y de cadena. La funciones que modifican a la función Now son las que siguen:

-Day. Función que recibe como parámetro a la función Now y devuelve, como valor númerico, el día del mes vigente. Ejemplo:

Var1 = Day(Now)Tras ejecutarlo, se asigna a Var1 el día de hoy, que es 2.

-WeekDay. Función que recibe como parámetro a la función Now y devuelve un valor númerico, que se corresponde con el día de la semana. Este valor númerico va del 1 al 7, de forma que si hoy fuera lunes, el valor a devolver sería 1, y si fuera domingo, el valor a devolver sería 7. Esta función, además, recibe un segundo parámetro, para indicar que el primer día de la semana, es el 2, que en el calendario americano, se corresponde con el lunes. Ejemplo:

Var1 = WeekDay(Now,2)Tras ejecutarlo, se asigna a Var1 el día de la semana, que al ser martes, es el 2.

-Month. Función que recibe como parámetro a la función Now y devuelve un valor númerico, que esta comprendido entre el 1 y el 12, y que se corresponde con el mes del año. Ejemplo:

Var1 = Month(Now)Tras ejecutarlo, se asigna a Var1 el mes actual en formato númerico, que al ser marzo, es el 3.

-Year. Función que recibe como parámetro a la función Now y devuelve un valor númerico de cuatro cifras, que se corresponden con el año actual. Ejemplo:

Var1 = Year(Now)Tras ejecutarlo, se asigna a Var1 un valor numérico, correspondiente al año actual.

-Hour. Función que recibe como parámetro a la función Now y devuelve un valor númerico comprendido entre 0 y 23, que se corresponden con la hora actual. Ejemplo:

Var1 = Hour(Now)Tras ejecutarlo, se asigna a Var1 un valor numérico, correspondiente a la hora actual.

-Minute. Función que recibe como parámetro a la función Now y devuelve un valor númerico comprendido entre 0 y 59, que se corresponden con el minuto de la hora actual. Ejemplo:

Var1 = Minute(Now)Tras ejecutarlo, se asigna a Var1 un valor numérico, correspondiente al minuto actual.

-Second. Función que recibe como parámetro a la función Now y devuelve un valor númerico comprendido entre 0 y 59, que se corresponden con el segundo de la hora actual. Ejemplo:

Var1 = Second(Now)Tras ejecutarlo, se asigna a Var1 un valor numérico, correspondiente al segundo actual.

-WeekDayName. Función que recibe como parámetro a la función WeekDay, la cual, a su vez, recibe como parámetros a la función Now y al valor 2, que indica el lunes como comienzo de la semana. Además, recibe otros dos parámetros. El primero indica si se devuelve el nombre completo o sólo las tres primeras letras del mismo, lo cual se hace indicando False o True respectivamente. El segundo valor es un dos, que tiene la misma función que en la función WeekDay. Devuelve una cadena de texto, en minúsculas, con el nombre del día de la semana. Ejemplo:

Var1 = WeekDayName(WeekDay(Now,2), False, 2)

Page 20: Visual Basic Script

Tras ejecutarlo, se asigna a Var1 un valor de cadena, el nombre del día de la semana.

-MonthName. Devuelve una cadena en minúsculas con el nombre del mes. Esta función recibe dos parámetros. El primero es la función Month, la cual recibe a su vez a la función Now. El segundo parámetro es un valor booleano, que con False indica que se devuelve el nombre completo del mes, y con True indica que se devuelve sólo los tres primeros caracteres del mismo. Ejemplo:

Var1 = MonthName(Month(Now), False)Tras ejecutarlo, se asigna a Var1 un valor de cadena, el nombre del mes.

-Time. Función que devuelve la hora, el minuto y los segundos, en formato digital y como cadena de texto. Ejemplo:

Var1 = TimeCon esto se almacena en Var1 la hora como cadena de texto.

-Date. Función que devuelve el día, el mes, y el año, en el formato habitual, separados por la barra inclinada, y como cadena de texto. Ejemplo:

Var1 = dateCon esto se almacena en Var1 la fecha como cadena de texto.

7.Programas.

-Programa que solicita al usuario una serie de operaciones, las cuales realiza el usuario sobre un número que él sólo conoce, tras lo cual, teminadas dichas operaciones, el usuario introducirá el número resultante de las mismas por pantalla, averiguando el programa el número que el usuario había pensado inicialmente.

Option ExplicitDim resultado

MsgBox "Piensa un número del 0 al 9",0,"Adivinador"MsgBox "Multiplícalo por 4",0,"Adivinador"MsgBox "Sumale 10",0,"Adivinador"MsgBox "Divídelo entre 2",0,"Adivinador"MsgBox "Sumale 50",0,"Adivinador"

resultado = InputBox("Introduce el número resultante","Adivinador","Coloca aquí el número")

resultado = resultado - 50resultado = resultado * 2resultado = resultado - 10resultado = resultado / 4

MsgBox "El número que pensaste fue: "&resultado,0,"Adivinador"

El programa a través de varios cuadros de mensaje, solicita una serie de operaciones a realizar sobre un número. Tras ello, y mediante un cuadro de diálogo, se solicita el número resultante. Con este número se realizan las operaciones en el orden inverso, desde la última y hasta la primera, de forma que se invierta la operación realizada (se cambia la suma por la resta, la división por la multiplica- ción, etc). Esto da como resultado el número que inicialmente se había pensado.

Page 21: Visual Basic Script

-Programa que solicita al usuario por pantalla la edad que tiene, y en función de dicha edad mostrará un mensaje de entre tres posibles.

Option ExplicitDim edad

edad = InputBox("¿cuál es su edad?","Edad","0")

if(edad<18) thenMsgBox "Eres un jovenzuelo",0,"Edad"

else ' edad >= 18if(edad > 65) THEN

MsgBox "Usted ya está jubilado",0,"Edad" else

' edad >= 18 y edad <=65 MsgBox "Usted es adulto",0,"Edad" end ifend if

A través de un cuadro de diálogo, el programa solicita al usuario la introducción de un número correspondiente a la edad, tras lo cual, el programa comprueba dicha edad, mediante tres condiciones. Si la primera se cumple, el programa muestra un cuadro de mensaje con el texto "Eres un jovenzuelo", ya que se refiere a una edad inferior a los 18 años. Si esta condición no se cumple, se pasa al else, donde tenemos a su vez , otra condición, en la que se comprueba si la edad es mayor de 65. Si se cumple, el programa muestra en pantalla un cuadro de mensaje con el texto "Usted ya está jubilado". Por contra, si esta condición no se cumple, se pasaría al else correspondiente, donde ya de forma directa se muestra el cuadro de mensaje con el texto "Usted es adulto".