博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VBScript开发Excel常见问题
阅读量:6250 次
发布时间:2019-06-22

本文共 1661 字,大约阅读时间需要 5 分钟。

VBS基础

基本概念:VB & VBS & VBA

VB、VBScript和VBA(Visual Basic For Application)这三种语言,既有联系又有区别。三种语言的语法一致,但是具体的应用场景又有区别。
  1. VB是一种编译型的语言,主要用于开发Windows应用程序,代码编译后生成二进制的可执行程序。
  2. VBScript是一种脚本型的语言,这种脚本语言的宿主程序是WSH(Windows Scripting Host),脚本程序运行时,加载的是Windows上下文环境。VBS强大的一点在于可以调用系统的COM对象,比如我可以创建Excel.Application对象,而且系统注册的Excel.Application对象可自动识别系统的Excel运行版本,创建对应的对象。
  3. VBA也是一种脚本语言,但是这种脚本语言的宿主是应用程序,如Excel,AutoCAD,CATIA。加载的上下文环境也是应用程序的上下文环境。其中使用最普遍的就是Excel VBA程序了。

帮助文档

VBS最好的文档当然是微软官方的MSDN了,上面介绍的特别全面。

脚本格式

VBS的脚本有两种文档格式,一种是vbs后缀,另一种是wsf(windows script format)。wsf是采用XML格式存储,支持JScript和VBScript。如果想执行这两种脚本,直接双击就可以,其实后台调用的是wscript程序执行的脚本。执行VBScript脚本有两种程序:
  1. cscript:命令行模式运行VBScript脚本。
  2. wscrip:交互模式运行VBScript脚本,可弹出GUI窗体与用户交互,这种脚本执行模式是Windows默认的脚本执行程序。

内建函数

VBScript中有一些内建函数,可以直接使用。

 

类对象

这点是我没想到的,我以为vbs语法比较简单。实际VBS还是支持类声明的,用来构造业务对象的数据结构挺方便。

1 Dim cfg 2 Set cfg = new SheetConfigType 3 Set cfg = nothing 4  5 Class SheetConfigType 6  7     public Index 8     public CustomRowHeight 9 10     private Sub Class_Initialize()11         'do nothing12     End Sub13 14     private sub Class_Terminate()15         'do nothing16     End Sub17 18 End Class

对象赋值

当给变量赋普通值时使用 
i = 5 这种语法就可以。将一个对象类型赋给变量时,需要采用类似 
Set cfg = new SheetConfigType 这种语法,注意前面多了一个Set关键字。

运行环境

VBS和VBA的运行环境还是有区别的,VBS默认只加载了Windows运行环境。在Excel里面录制的宏,是不能直接拿来用的。像Selection、Range这种对象在Excel VBA中可以直接使用,在VBS中是需要先创建再使用的。

1 
2
4
18

异常处理

在VBS中如果脚本运行出现异常,异常直接就被抛出了,后面的脚本是不会被执行的。这就会造成一个问题,比如创建了一个Excel对象,执行到一半,脚本崩溃,但这个Excel对象还在进程中,并没有被回收销毁。解决方案也很简单,在脚本前面加一行代码: On Error Resume Next 。如果脚本异常,继续执行下一行,这样脚本肯定能跑到进程关闭那行的。但是调试的时候,不要写这行,不然很难定位到底是哪出BUG了,发布的时候再加上。

转载于:https://www.cnblogs.com/dalianliyan/p/4976061.html

你可能感兴趣的文章
IOS8 通知中心(Notification Center)新特性
查看>>
用C++设计一个不能被继承的类
查看>>
poj 3009 Curling 2.0 (dfs )
查看>>
DPI和像素
查看>>
php $_SERVER['HTTP_USER_AGENT']
查看>>
MinGW 介绍
查看>>
MATLAB中导入数据:importdata函数
查看>>
bsearch的溢出问题
查看>>
在windows server2003下安装Redmine
查看>>
mysql 加入列,改动列,删除列。
查看>>
HTTPWatch使用
查看>>
如何确定照片是否被PS过
查看>>
Reverse Nodes in k-Group
查看>>
使用android快速开发框架afinal的FinalDb操作android数据库
查看>>
在SSH框架中使用Spring的好处(转)
查看>>
【MATLAB】读取和写入文本文件
查看>>
Android中实现Launcher功能之二 ----- 添加窗口小部件以及AppWidget的创建详解
查看>>
Handler sendMessage 与 obtainMessage (sendToTarget)比较
查看>>
Working in Singapore
查看>>
php发送get、post请求的几种方法
查看>>