VBS学习笔记:第一章 VBS脚本入门

1.VBS简介

Vbs是一种Windows脚本(技术手册)

图片

它的全称是:Microsoft Visual Basic Script Editon ( VB脚本版 ),

VBS是VisualBasic的的一个抽象子集,是系统内置的,用它编写的脚本代码不能编译成二进制文件,直接由Windows系统执行(实际是一个叫做WSH(Windows Scripting Host)Windows脚本宿主解释源代码并执行)。

图片

2.VBS优缺点

高效、易学。大部分高级语言具有的功能,它基本上都具备,可以使各种任务实现自动化,可以使你从重复琐碎的工作中解脱出来,极大的提高工作效率。

我个人认为Vbs脚本其实就是一种计算机编程语言,但是由于缺少计算机程序设计语言中的部分要素,对于事件的描述能力较弱,所以称为脚本。它最方便的地方就是提供了对COM对象的简便支持。

VBS语法简单易用,只有一种数据类型,即所有变量的数据类型都是Variant。VBS不区分大小写。

3.VBS编程环境

最方便的是它甚至不需要专门的开发环境,在你的计算机中,只要有notepad,就可以编写Vbs脚本了,并且可以直接执行。

Notepad:传说中的记事本!!!

    msgbox"VBS是个好东西!!!"

实际上,任何一种文本编辑器都可以用来开发VBS脚本。

推荐的编程环境:

Vbsedit

VBSEdit是由Adersoft公司出品的一款小巧而强悍的VBScript编辑工具。支持语法高亮、参数提示以及自动完成关键字功能。支持调试以及监视变量功能。支持动态查看帮助文件。

图片

5.高级语言基本要素

类(Class)是面向对象程序设计实现信息封装的基础。类是具有一定功能的代码的组合。类的实例称为对象。

函数、方法(Function),描述能做什么。

属性(Property)对于实例的抽象,描述是什么。

6.注释

注释非常重要,也是程序不可或缺的一部分。代码是给机器看的,注释是写给人看的。(包括自己)在一段代码的前面加上单引号(’),就会将这段代码注释掉。

VBScript中所有的符号都是英文半角符号。

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

msgbox"VBS是个好东西!!!"
'注释

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

7.申明变量

VBScript只有一种数据类型-- Vanant,它是根据上下文来判断是数字还是字符串。因为Vanant是VBScript中唯一的数据类型,所以它也是VBScript中所有的数的返回值的数据类型。

一、申明变量

① 显式声明:Dim、Public、Private语句进行声明

②隐式声明:不声明直接使用

④ 强制声明: Option Explicit 语句强制显式声明所有变量,避免使用错误的变重名

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Option Explicit '语句强制显式声明所有变量,避免使用错误的变重名

'显示申明

'Dim、Public、Private'作用域不同
Dim a      '局部变量
Private b  '过程级变量,在一个类内部有效
Public c   '公开变量,类与类之间可以访问
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

一行中声明多个变量
dim name,age
name="zhangsan"
age=27
MsgBox name & age
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'对多个变里赋值
name="zhangsan":age=27
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'隐式申明,直接使用
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

不允许在声明变量的同时赋值
Dim str="ABC123"    '错误语句
Dim k : k=1         '正确语句
msgbox str

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

8.保留字

保留字也叫关键字,VBS保留字一共79个:

AndAs Boolean ByRef Byte ByVal Call Case Class Const Curency Debug Dim Do Double EachElse Elself Empty End Endlf Enum Eqv Event Exit False For Function Get Goto lf lmp lmplementsIn integer is Let Like Long Loop LSet Me Mod New Next Not Nothing Null On Option Optional OrParamAray Preserve Prvate Public RaiseEvent ReDim Rem Resume RSet Select Set SharedSingle Static Stop Sub Then To True Type TypeOf Until Variant WEnd While With Xor

保留字不能做普通标识符,但是可以做中括标识符。

普通标识符规则:

第一个字符必须是字母,

后面的字符可以是字母、数字和下划线(_),

长度不能超过 255 个,

字符不能是VBS保留的关键字

中括号标识符的规则更简单:

中括号括起来的任意Unicode字符(换行、回车和NULL除外),

长度不能超过 255 个字符(不包括中括号),

有了中括号标识符,就可以用任意字符来做变重名了,包括VBS保留字

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Dim [dim]
[dim]=9
MsgBox [dim]

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

9.常数

常数是指在程序运行过程中值固定不变的数值。在现实生活中的例子:Π。

在VBS中自定义常量的例子:

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Const A = “MyString"

Const pai=3.14

MsgBox 8*pai

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

VBS中的常数:

频色常数

比较常数

日期和时间常数

日期格式常数

区域设置 ID(LCID)表

杂项常数

MsgBox 常数

字符串常数

三态常数

VarType 常数

VBScript 常数

10.数组

只包含一个值的变量被称为标量变量。包含一系列值的变量,称为数组。

变量声明数组变量时变量名后面带有括号()。

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'下例声明了一个包含 11 个元素的一维数组:
Dim A(10)
'在VBScript 中所有数组都是基于0的,所以这个数组实际上包含 11 个元素。
'这种数组被称为固定大小的数组。
'在数组中使用索引为数组的每个元素赋值。如下所示:
A(0)=256
A(1)=324
A(2)=46

A(10)=55
'检索到所需的数组元素的数据。
'例如:
SomeVariable = A(8)
MsgBox A(0)+SomeVariable

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

数组并不仅限于一维。数组的维数最大可以为 60。声明多维数组时用逗号分隔,括号中每个表示数组大小的数字。6行和11列的二维数组

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Dim MyTable(5,10)

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

在二维数组中,括号中第一个数字表示第一维的数目,第二个数字表示第二维的数目。

也可以声明动态数组,即在运行脚本时大小发生变化的数组。对数组的最初声明使用Dim 语句或 ReDim 语句。但是对于动态数组,括号中不包含任何数字。例如:

Dim MyArray()

ReDim AnotherArray()

要使用动态数组,必须随后使用ReDim 确定维数和每一维的大小。在下例中,ReDim将动态数组的初始大小设置为 25,而后面的ReDim 语句将数组的大小重新调整为 30,同时使用 Preserve 关键字在重新调整大小时保留数组的内容。

ReDim MyArray(25)

ReDim Preserve MyArray(30)

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'声明一个三维数组,括号中的第一个数字表示第一个维度中的元素数量
Dim array02(5,7,4)

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

申明一个动态数组
Dim array03()

'动态修改数组元素数量,如果修改后的元素数量少于修改前,那么多出来的部分元素就会丢失。
ReDim array03(20)

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

11.运算符

VBScript有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。

需要注意的符号:

=:等于

<>:不等于

\:整除

Mod:求余

+和&的区别

or:或运算

and:与运算

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'+-*/
'+包含两种运算功能
Dim a,b,c
a=3
b=4
c=a+b   '数值运算
MsgBox c


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

a="3"
b="4"
c=a+b   '文本连接
MsgBox c=a+b    '判断运算
MsgBox c

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

12.条件判断

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Dim a,b
a=3
b=4
MsgBox b mod a      '1
MsgBox a=3 Or b=3   'True
MsgBox a=3 And b=3  'Fasle


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'if语句,

'语法格式 

'If 条件1 Ihen,
'程序段1
'ElseIf 条件n Ihen
'程序段n
'...
'Else
'以上的几种情况都不是
'End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Dim c
c=8

If c=0 Then 
MsgBox "c=0"        '1
ElseIf c=1 Then
MsgBox "c=1"
ElseIf c=2 Then
MsgBox "c=2"
ElseIf c=3 Then
MsgBox "c=3"
Else
MsgBox "c不等于以上任何一个值"
End if 

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

13.循环语句

控制程序执行的顺序流程:

循环语句:

Do...Loop 当(或直到)条件为 True 时循环。

While...Wend:当条件为 True 时循环。

Fo....Next:指定循环次数,使用计数器重复运行语句。

ForEach...Next:对于集合中的每项或数组中的每个元素,重复执行一组语句。

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'Do...Loop 语句

'当条件为 True 时重复执行语句

'While 关键字用于检查 Do...Loop 语句中的条件。
Do While a<10
a=a+1
MsgBox a    '1~3
If a >= 3 Then Exit Do    '退出循环
Loop
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'重复执行语句直到条件变为 True
'Until 关键字用于检查 Do...Loop 语句中的条件。
Do until a<=0
a=a-1
MsgBox a    '2~0
Loop
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim counter, myNum
counter = 0
myNum = 1
Do
    myNum = myNum + 1
    counter = counter + 1
Loop Until myNum = 10   '重复执行语句直到条件变为 True
MsgBox "循环重复了 " & counter & " 次。"    '9次
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'当条件为 True 时循环。
While a<3
a=a+1
MsgBox a    '1~3
Wend 


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'For...Next语句

指定计数器变量 x 及其起始值与终止值。Next 语句使计数器变量每次加 1。

'关键字 Step 用于指定计数器变量每次增加或减少的值。

For a=11 To 17 Step 2
MsgBox a    '11、13、15、17
Next



'For Each...Next 不是将语句运行指定的次数,而是对于数组中的每个元素或对象集合中的每一项重复一组语句。这在不知道集合中元素的数目时非常有用。对于集合中的每项或数组中的每个元素,重复执行一组语句。

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Dim d                   '创建一个变量
Set d = CreateObject("Scripting.Dictionary")
d.Add "0", "Athens"     '添加键和项目
d.Add "1", "Belgrade"
d.Add "2", "Cairo"

For Each I in d
Document.frmForm.Elements(I).Value = D.Item(I)
Next


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

14.过程

Sub:子程序。

可以带参数,但不返回值。

Function:函数。

可以带参数,可以返回值。

使用过程的好处:

1、降低复杂性,简化逻辑。

2 、避免代码段重复,代码复用降低代码量。

3 、限制改动带来的影响。

4 、改进性能,提高可维护性。

5 、促进重新使用代码段

6 、改善某一代码段可读性

7 、改善可移植性

子程序的命名很重要,如果找到一个合适的命名非常困难,而模棱两可的名字往往代表着某种警告。

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'子程序传参不返回

test(11)

Sub test(a)

MsgBox "我是子程序"&a

End Sub 

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'子程序传参带返回

c=test1(3,4)
MsgBox "运算结果是"&c

Function test1(a,b)
test1=a+b
End Function 

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

15.字符串处理

字符串是由Unicode(万国码)字符组成的一串字符。通常由数字、字母、符号组成。

常用的操作函数

LTrim(消除左边空格)、

Rtrim(消除右边空格)、

Trim  (消除左右空格)、

Split:分割字符串

Left、right、Mid:截取字符串

Replace:替换字符串

Len:获取字符串长度

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

a=" 我是 字符串 "
b="123"
'ltrim 消除字符串左边的空格
MsgBox LTrim (a)&b

'rtzim 消除字符串右边的空格"
MsgBox RTrim (a)&b

'tzim 同时消除字符串左右两端的空格"
MsgBox Trim (a)&b

'Split:将字符串根据条件进行分割
c="1,2,3,4,5"
d=Split(c,",")   '分隔符区分中英文,区分大小写

For Each I in d
MsgBox I
Next

'Dim MyString,MyArray,Msg
MyString = "VBScriptXisXfun!"
MyArray = Split(MyString, "X")
' MyArray(0) contains "VBScript".
' MyArray(1) contains "is".
' MyArray(2) contains "fun!".
'Msg = MyArray(0)

For Each j in MyArray
MsgBox j
Next

Msg = MyArray(0) & " " & MyArray(1)
Msg = Msg   & " " & MyArray(2)
MsgBox Msg

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'Left 函数
'返回指定数目的从字符串的左边算起的字符。
a="您好,123!"
b=Left(a,4)
MsgBox b

Dim MyString, LeftString
MyString = "VBSCript"
LeftString = Left(MyString, 3) 'LeftString 包含 "VBS"。
MsgBox LeftString

'Right 函数  
'从字符串右边返回指定数目的字符。
'Right(string, length)
Dim AnyString, MyStr
AnyString = "Hello World"      '定义字符串。
MyStr = Right(AnyString, 1)    '返回 "d"。
MsgBox MyStr
MyStr = Right(AnyString, 6)    ' 返回 " World"。
MsgBox MyStr
MyStr = Right(AnyString, 20)   ' 返回 "Hello World"。
MsgBox MyStr

'Mid 函数
'从字符串中返回指定数目的字符。
'Mid(string, start[, length])
Dim MyVar
MyVar = Mid("VB脚本is fun!", 4, 6) 'MyVar 包含 "Script"。
MsgBox MyVar 


'Replace 函数
'返回字符串,其中指定数目的某子字符串被替换为另一个子字符串。
'Replace(expression, find, replacewith[, compare[, count[, start]]])
Dim MyString3
MyString3 = Replace("XXpXXPXXp", "p", "Y") '二进制比较从字符串左端开始。返回 "XXYXXPXXY"。
MsgBox MyString3
MyString3 = Replace("XXpXXPXXp", "p", "Y", 3, -1, 1) '文本比较从第三个字符开始。返回 "YXXYXXY"。
MsgBox MyString3


'Len 函数
'返回字符串内字符的数目,或是存储一变量所需的字节数。
'Len(string | varname)
Dim MyString2
MyString2 = Len("VBSCRIPT") 'MyString 包含 8 个字符。
MsgBox MyString2

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

16.时间函数

获取当前时间,格式等于系统设置

Now

获取单独的时间变量:

Year(now)/Monthy/Day/Hour/Minute/Second/Weekday

WeekDayName:返回周日期的字符串

常数描述
vbUseSystem0使用区域语言支持 (NLS) API 设置。
vbSunday1星期日(默认)
vbMonday2星期一
vbTuesday3星期二
vbWednesday4星期三
vbThursday5星期四
vbFriday6星期五
vbSaturday7星期六

MsgBox WeekdayName(2) '星期一,/缩写:周一

时间间隔函数:

DateAdd:添加时间间隔.

DateDiff:计算时间间隔

DatePant:返回日期中的指定部分

'now获取当前日期和时间
'格式与系统设置一致
MsgBox Now 

'获取日期字符串中的单独的部分
'Year 函数
'返回一个代表某年的整数。
'Year(date)

MsgBox Year(now)
MsgBox Year("2017-05-05")
MsgBox Month(now)
MsgBox Day(now)
MsgBox Hour(now)
MsgBox Minute(now)
MsgBox second(now)

DateAdd 函数

返回已添加指定时间间隔的日期。

DateAdd(interval, number, date)

参数

interval

必选项。字符串表达式,表示要添加的时间间隔。有关数值,请参阅“设置”部分。

number

必选项。数值表达式,表示要添加的时间间隔的个数。数值表达式可以是正数(得到未来的日期)或负数(得到过去的日期)。

date

必选项。Variant 或要添加 interval 的表示日期的文字。

设置

interval 参数可以有以下值:

设置描述

yyyy

q

季度

m

y

一年的日数

d

w

一周的日数

ww

h

小时

n

分钟

s

MsgBox DateAdd("m", 1, "31-Jan-95")

DatePart 函数

返回给定日期的指定部分。

DatePart(interval, date[, firstdayofweek[, firstweekofyear]])

Arguments(参数)

interval

必选项。字符串表达式表示要返回的时间间隔。有关数值,请参阅“设置”部分。

Date

必选项。要计算的日期表达式。

firstdayof week

可选项。指定星期中的第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。

Firstweekofyear

可选项。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。有关数值,请参阅“设置”部分。

设置

interval 参数可以有以下值:

设置

描述

yyyy

q

季度

m

y

一年的日数

d

w

一周的日数

ww

h

小时

n

分钟

s

TheDate = InputBox("请输入日期")    '1890/2/7
MsgBox DatePart("q", TheDate)      '1季度

DateDiff 函数

返回两个日期之间的时间间隔。

DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])

DateDiff 函数的语法有以下参数:

参数

interval

必选项。String expression 表示用于计算 date1 和 date2 之间的时间间隔。有关数值,请参阅“设置”部分。

date1, date2

必选项。日期表达式。用于计算的两个日期。

Firstdayofweek

可选项。指定星期中第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。

Firstweekofyear

可选项。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。有关数值,请参阅“设置”部分。

设置

interval 参数可以有以下值:

设置

描述

yyyy

q

季度

n

y

一年的日数

d

w

一周的日数

ww

h

小时

m

分钟

s

Msgbox "从生日开始到当日的天数:" & DateDiff("d", theDate, Now)

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值