VBScript开发Excel常见问题
VBS基础
基本概念:VB & VBS & VBA
- VB是一种编译型的语言,主要用于开发Windows应用程序,代码编译后生成二进制的可执行程序。
- VBScript是一种脚本型的语言,这种脚本语言的宿主程序是WSH(Windows Scripting Host),脚本程序运行时,加载的是Windows上下文环境。VBS强大的一点在于可以调用系统的COM对象,比如我可以创建Excel.Application对象,而且系统注册的Excel.Application对象可自动识别系统的Excel运行版本,创建对应的对象。
- VBA也是一种脚本语言,但是这种脚本语言的宿主是应用程序,如Excel,AutoCAD,CATIA。加载的上下文环境也是应用程序的上下文环境。其中使用最普遍的就是Excel VBA程序了。
帮助文档
脚本格式
- cscript:命令行模式运行VBScript脚本。
- wscrip:交互模式运行VBScript脚本,可弹出GUI窗体与用户交互,这种脚本执行模式是Windows默认的脚本执行程序。
内建函数
VBScript中有一些内建函数,可以直接使用。
类对象
这点是我没想到的,我以为vbs语法比较简单。实际VBS还是支持类声明的,用来构造业务对象的数据结构挺方便。
Dim cfg
Set cfg = new SheetConfigType
Set cfg = nothing Class SheetConfigType public Index
public CustomRowHeight private Sub Class_Initialize()
'do nothing
End Sub private sub Class_Terminate()
'do nothing
End Sub End Class
对象赋值
运行环境
VBS和VBA的运行环境还是有区别的,VBS默认只加载了Windows运行环境。在Excel里面录制的宏,是不能直接拿来用的。像Selection、Range这种对象在Excel VBA中可以直接使用,在VBS中是需要先创建再使用的。
<job id="ExcelReport">
<reference guid="{00020813-0000-0000-C000-000000000046}"
comment="MSExcel 2002 tag library, under HKEY_CLASSES_ROOT\TypeLib\"/>
<script language="VBScript">
Option Explicit
On Error Resume Next
Dim xlsPath, excelApp, workbook, sheet
xlsPath = WScript.Arguments()
Set excelApp = CreateObject("Excel.Application")
excelApp.DisplayAlerts = False
Set workbook = excelApp.Workbooks.Open(xlsPath)
For Each sheet In workbook.Worksheets
'do something
Next
workbook.Close
excelApp.Quit
</script>
</job>
异常处理
在VBS中如果脚本运行出现异常,异常直接就被抛出了,后面的脚本是不会被执行的。这就会造成一个问题,比如创建了一个Excel对象,执行到一半,脚本崩溃,但这个Excel对象还在进程中,并没有被回收销毁。解决方案也很简单,在脚本前面加一行代码: On Error Resume Next 。如果脚本异常,继续执行下一行,这样脚本肯定能跑到进程关闭那行的。但是调试的时候,不要写这行,不然很难定位到底是哪出BUG了,发布的时候再加上。
VBScript开发Excel常见问题的更多相关文章
- C# 操作 Excel 常见问题收集和整理
C# 操作 Excel 常见问题收集和整理(定期更新,欢迎交流) 经常会有项目需要把表格导出为 Excel 文件,或者是导入一份 Excel 来操作,那么如何在 C# 中操作 Excel 文件成了一个 ...
- VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式
原文:VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式 Excel包含很多公式,如数学.日期.文本.逻辑等公式,非常方便,可以灵活快捷的对数据进行处理,达到我们想要的效果.Exce ...
- C# Unity游戏开发——Excel中的数据是如何到游戏中的 (二)
本帖是延续的:C# Unity游戏开发——Excel中的数据是如何到游戏中的 (一) 上个帖子主要是讲了如何读取Excel,本帖主要是讲述读取的Excel数据是如何序列化成二进制的,考虑到现在在手游中 ...
- C# Unity游戏开发——Excel中的数据是如何到游戏中的 (三)
本帖是延续的:C# Unity游戏开发——Excel中的数据是如何到游戏中的 (二) 前几天有点事情所以没有继续更新,今天我们接着说.上个帖子中我们看到已经把Excel数据生成了.bin的文件,不过其 ...
- C# Unity游戏开发——Excel中的数据是如何到游戏中的 (四)2018.4.3更新
本帖是延续的:C# Unity游戏开发--Excel中的数据是如何到游戏中的 (三) 最近项目不算太忙,终于有时间更新博客了.关于数据处理这个主题前面的(一)(二)(三)基本上算是一个完整的静态数据处 ...
- 2019最新最全Java开发面试常见问题答案总结
2019最新最全Java开发面试常见问题答案总结 马上准备9月份出去面试Java开发,自己学习丢西瓜捡芝麻,学了的都忘了,所以有机会自己做个学习笔记,摘录自各个博文以及总结. 1.JAVA面向对象的特 ...
- iOS开发中常见问题集锦
在iOS开发中,会出现各种各样的问题.今天,就把这些常见的问题以及各位大牛的解决方案汇总下,方便以后查阅: 常见错误: 1. linker command failed with exit code ...
- C# 操作 Excel 常见问题收集和整理(定期更新,欢迎交流)
经常会有项目需要把表格导出为 Excel 文件,或者是导入一份 Excel 来操作,那么如何在 C# 中操作 Excel 文件成了一个最基本的问题. 做开发这几年来,陆陆续续也接触过这样的需求,但因为 ...
- 转-C# 操作 Excel 常见问题收集和整理
经常会有项目需要把表格导出为 Excel 文件,或者是导入一份 Excel 来操作,那么如何在 C# 中操作 Excel 文件成了一个最基本的问题. 做开发这几年来,陆陆续续也接触过这样的需求,但因为 ...
随机推荐
- 本地搭建sass运行环境
1.安装node.js 安装文件为msi文件,可到node.js官网下载安装包,下载路径为:https://nodejs.org/en/download/ 安装路径为默认路径,安装完成之后配置环境变量 ...
- JSONP-跨域读取数据
页面代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...
- python全栈开发_day15_函数回调和模块
一:函数回调 def a(fn=None): print("run1") if fn: fn() print("run 2") def b(): print(& ...
- 总博客 wjyyy
更多文章可见http://www.wjyyy.top/
- OAuth2.0认证和授权以及单点登录
https://www.cnblogs.com/shizhiyi/p/7754721.html OAuth2.0认证和授权机制讲解 2017-10-30 15:33 by shizhiyi, 2273 ...
- Node.js环境搭建&&npm安装
Node.js环境搭建 什么使Node.js呢?我们知道JavaScript开始作为客户端语言,但早已在浏览器端一统江湖,这时,野心越来越大,它就想向服务器端拓展了,于是Node.js就是这样的,我们 ...
- vue构造器以及实例属性
一.构造器 1.vue.js就是一个构造器,通过构造器Vue来实例化一个对象:例如:var vm = new Vue({}); 2.实例化Vue时,需要传入一个参数(选项对象): 3.参数:选项对象可 ...
- Android进程管理
1.进程按照优先级分为不同的等级FVSBE Foreground process前台进程:用户可看到进程里某个activity界面(可以获得焦点的) Visible process可见进程:用户仍可见 ...
- Linux 操作系统常用的三种流012
Linux 操作系统常用的三种流: 0 标准输入流 1 标准输出流 2 标准错误流 通常在写脚本启动程序,写log时候,会出现如下写法: nohup commod > log.txt 2> ...
- WPF 使用依赖属性自定义控件
使用依赖属性自定义控件,依赖属性必须定义在自定义控件中,不能定义在其他文件中 一.先实现一个类继承你要复写的类 using System; using System.Collections.Gener ...