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 文件成了一个最基本的问题. 做开发这几年来,陆陆续续也接触过这样的需求,但因为 ...
随机推荐
- ui7
2016.9讲义 一.课程的主要内容和目的 二.课程所用工具软件——Photoshop CS6 1. Photoshop 的发展史 1990.2,ps1.0问世,1991.2,PS2.0发行,此后,进 ...
- PHP获取时间比实际时间少8小时的问题
有两方法 1.我们写PHP程序在获取时间时,人为加上8小时(这种方法是最实用也是最土的方法) 2.如果直接获取正确时间,也可修改PHP的配置文件,即查找php.ini文件 修改方法:在php.ini文 ...
- (转)Memcached 之 .NET(C#)实例分析
一:Memcached的安装 step1. 下载memcache(http://jehiah.cz/projects/memcached-win32)的windows稳定版(这里我下载了memcach ...
- (转)Python数学函数
原文:https://www.cnblogs.com/lpl1/p/7793645.html PYTHON-基础-内置函数小结----------http://www.wklken.me/posts/ ...
- 【Kafka源码】日志处理
目前来说,kafka的日志中记录的内容比较多,具体的存储内容见这篇博客,写的比较好.可以看到,存储的内容还是比较多的,当存储文件比较大的时候,我们应该如何处理这些日志?下面我们通过kafka启动过程的 ...
- Integer源码分析
Integer中包含了大量的static方法. 1.分析Integer的缓存机制:首先定义了一个缓存区,IntegerCache,其实就是一个Integer数组cache[],它默认存储了从-128~ ...
- 请别再拿“String s = new String("xyz");创建了多少个String实例”来面试了吧---转
http://www.iteye.com/topic/774673 羞愧呀,不知道多少人干过,我也干过,面壁去! 这帖是用来回复高级语言虚拟机圈子里的一个问题,一道Java笔试题的. 本来因为见得太多 ...
- (完整)爬取数据存储之TXT、JSON、CSV存储
一.文件存储 1. TXT文本存储 例:知乎发现页面,获得数据存成TXT文本 import requests from pyquery import PyQuery as pq url="h ...
- DateTime compare
DateTime t1 = new DateTime(100); DateTime t2 = new DateTime(20); if (DateTime.Compare(t1, t2) > 0 ...
- [转]SSRS: Checking for Divide By Zero Using Custom Code
本文转自:http://salvoz.com/blog/2011/11/25/ssrs-checking-for-divide-by-zero-using-custom-code/ I encount ...