vba执⾏⽹页javascript_Excel中使⽤JavaScript的⽅法
基础篇
Excel的缺省脚本语⾔是VBA,所以系统的⼀切接⼝理论上都是可以通过VBA脚本访问的,⽽使⽤其他脚本语⾔可能只能访问部分功能,这点是需要开发者明确的。但是Javascript脚本的好处是,其语法简单,结构清晰,⽤户友好:例如⽀持Function-Frist,不必管理内存,⽀持Object类型,for循环语法简单等。
使⽤JavaScript基本⽅法
1. 在引⽤中包含"Microsoft Script Control"控件
添加⽀持MS Script Control控件
2. 新建ScriptControl,即创建⼀个JS运⾏环境
3. 在JS运⾏环境中添加JavaScript脚本(字符串)
4. 调⽤JS运⾏环境中的函数
使⽤JavaScript的基本⽅法
实际项⽬中的问题
在VBA脚本中以字符串形式定义JavaScript脚本/程序带来很⼤的⿇烦:
字符串较长的时候,需要换⾏,VBA本⾝换⾏需要在每⾏加连接符。JavaScript程序的换⾏,只能通过转义符号表⽰。JavaScript代码的管理、维护、检查、甚⾄调试都⽆法单独进⾏。因此在实际项⽬中,⼀般要求把JavaScript脚本与VBA脚本分开管理。那么涉及到如何将在VBA中读取的JavaScript脚本问题,⼀旦得到脚本对应的字符串,就可以将其添加到JS运⾏环境中。⼤约有三种⽅法:(⼀)JavaScript 与Excel⽂件⼀起发⾏。VBA脚本运⾏时读取本地的JavaScript⽂件;(⼆)JavaScript⽂件放置于服务器中,VBA下载JavaScript⽂件,并读取。(三)JavaScript⽂件以某种⽅式包含于Excel⽂件中。显然⽅法(⼀),(⼆)更适合开发阶段;⽽⽅法(三)适合于实际发布版本。以下介绍⼏种⽅法的实现问题。
问题⼀:读取⽂件
⽀持UTF-8编码⽂件
⼀般在VBA中读取⽂件可以⽤Open-Input接⼝或者FileSystemObjectScripting对象的 TextStream接⼝,但都不⽀持读取UTF-8编码的⽂件。⽽JavaScript脚本⽂件⼀般存储为UTF-8编码格式。因此需要特别使⽤⽀持该编码的⽂件读取⽅式,如例⼦中使⽤ADODB.Steam 对象⽀持读取UTF-8编码的⽂件。
js脚本开发
问题⼆:下载远程⽂件在VBA中下载远程⽂件,有两类⽅式,⼀种是使⽤VBA中可以⽤的某些控件进⾏下载,另⼀种是使⽤操作系统的底层接⼝下载。⼀般第⼆种⽅法的速度更快,稳定性更好。
使⽤XMLHTTP控件下载⽂件
使⽤操作系统的⽂件下载接⼝
问题三:JavaScript打包在Excel中
问题三.⽅法⼀
⼟⼈的⽅法是直接把JavaScript⽂件拷贝在某个隐藏的Sheet的某个Cell中,VBA读取则个Cell中的字符串,就相当于或许的JavaScript脚本。
读取隐藏表中的内容
问题三.⽅法⼆
把脚本⽂件以对象⽅式嵌⼊(Embed)到Excel⽂件,再VBA运⾏时读取嵌⼊对象。下例中笔者以后缀名添加的嵌⼊对象。读取嵌⼊⽂件对象的⽅式也有两种(1)直接⽤Notepad打开⽂件,然后读取Notepad中的内容。(2)将嵌⼊⽂件存储为本地⽂件,然后⽤前⾯介绍的"读取⽂件”的⽅法读取。
打开嵌⼊的⽂件再拷贝
保存嵌⼊的⽂件再读取
问题三.⽅法三⽅法三是推荐⽅法。使⽤Excel中的CustomXMLPart接⼝,添加、删除、读取定制的XML⽚段。即将JavaScript⽂本封装在⼀个定制的XML⽚段中。这种⽅法的好处是:1.简单稳定,2.对⽤户完全隐藏,3. 不访问⽂件系统不访问⽹络。
添加CustomXMLPart的⽰例
上例中,在添加之前还有读取CustomXMLParts中是否已经添加了该类型的XMLPart的判断。因为在笔者的应⽤这确保只添加JavaScript脚本⼀次。其余CustomXMLPart读取、修改、删除等接⼝的使⽤,请查看相关⽂档。
多个JS⽂件
类似HTML中可以载⼊多个Javascript⽂件。⼀个JS运⾏环境中也可以载⼊多次脚本(字符串)。当然也可以把所有⽂件的字符串都串接起来再载⼊JS运⾏环境。
适⽤性
据查Office 2016之后,微软才正式提供JavaScript API。笔者在MS-Office2010中使⽤该⽅法,能够在JavaScript中获取Cell的⼏乎所有属性值。但是那些这部分并没有完整的⽂档。另外数组的创建似乎不能直接使⽤var x = [],⽽需要var x =new Array();
JavaScript代码收集Range信息

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。