ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4035|回复: 13

[讨论] 脚本语言 WSH

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-9-10 10:04 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:脚本语言应用
脚本中:
  set  变量= 脚本变量.CreateObject("对象名")
VBA中
   set 变量=CreateObject(“对象名”)

请教下各位大神,除了这些小区别,其他还有什么的吗?望不吝赐教。。。

TA的精华主题

TA的得分主题

发表于 2014-9-10 10:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
对象本身没什么区别的 只要是activex对象 都可以一样用 区别在于vba和vbs的宿主和输入输出

TA的精华主题

TA的得分主题

发表于 2014-9-10 10:59 | 显示全部楼层
区别还是比较大的。本质上来说VBA和VBS是两种语言,不过语法相似。
VBA是“在应用程序中的VBA语言”,它涉及应用程序(例如EXCEL)的对象、方法属性,
WSH则是“一个应用程序,它带了VBS语言”——所以要比较的话,双方应该拿VBA和VBS相比,就是“VBS和WSH应用对象、方法、属性”

1.VBS不能定义数据类型

VBA象这种 DIM S AS STRING,I AS INTEGER
在VBS里全都是一种,无需声明 DIM S,I
它们的区别是,有类型的变量运行效率高,这个不解释了。不过在VBS里,它的主要目的(临时脚本之类)也不追求变量效率

2.界面
VBS是没有用户界面的。VBA的界面一般会有两套“内置的”,一个是APP应用程序的GUI——比如EXCEL的工作簿-工作表上显示,另一个则是VBA的MICROSOFT FORM引用。
仅作脚本管理的目睥,VBS拿来做CMD命令行输出、MSGBOX输出(MSGBOX "HELLO" 这种),如果需要更强大界面,需引用VBS以外的OBJECT

3.函数对象不同
象VBA里的format 函数,在VBS里就没有——连带WSH也没有。它们就是两套函数,只不过有相当一部分名字、用法相同

认真说起来,CREATEOBJECT也是有区别的,
比如在WSH里,WSH对象.createobject 方法 和VBS自身的 CREATEOBJECT函数 ,两者形式都不同,后者接近VBA的CREATEOBJECT函数,前者是WSH本身的CREATEOBJECT,可以连接对象事件

TA的精华主题

TA的得分主题

发表于 2014-9-10 11:04 | 显示全部楼层
百度不到去谷歌 发表于 2014-9-10 10:20
对象本身没什么区别的 只要是activex对象 都可以一样用 区别在于vba和vbs的宿主和输入输出

仅就CREATEOBJECT函数(或方法)来说,它们能创建操纵的是AUTOMATION ACTIVEX对象
因为ACTIVEX也有上层区别——AUTOMATION自动化对象属于ACTIVEX这个上层集合,其它非AUTOMATION的ACTIVEX也是有的,一个例子是FORMS窗体CONTROLS下面的控件,它们自已有一套规范要求,要有上级容器,由某个对象实例产生,不属于注册的类库集合,VBS和VBA里简单地CREATEOBJECT并不能创建出来。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-10 15:25 | 显示全部楼层
hiyou 发表于 2014-9-10 11:04
仅就CREATEOBJECT函数(或方法)来说,它们能创建操纵的是AUTOMATION ACTIVEX对象
因为ACTIVEX也有上层区 ...

谢谢,能不能多讲下 脚本语言的强势在哪些? 我看批处理论坛,多是些文件管理类,感觉有许多没多大用处、。。

现在我唯一的左右就是搞恶作剧玩,或者给我的VBA文件加密用。。。

点评

你要管理AD域的话,WSH是看家本领  发表于 2014-9-11 09:34

TA的精华主题

TA的得分主题

发表于 2014-9-10 15:40 | 显示全部楼层
一个是“对象”的 Method ,一个是“老概念”的函数/过程

TA的精华主题

TA的得分主题

发表于 2014-9-10 16:05 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-9-11 08:55 | 显示全部楼层
490483577 发表于 2014-9-10 15:25
谢谢,能不能多讲下 脚本语言的强势在哪些? 我看批处理论坛,多是些文件管理类,感觉有许多没多大用处、 ...

脚本语言(VBS\JS)的初衷是"轻便、快捷”的管理,主要还是轻便,可以认为是批处理(BAT)的进化


它有两个方向
1.系统管理员对整个系统(WINDOWS)的操作管理
比如说管理员临时要来个操作,计划任务啦、启动顺序啦、注册表修正啦,这些东东要是正儿八经地编个程序,还带编译运行,运行完一看,啊我有个错误重编译 。。。。。。
所以要用个解释型的程序语言,随手写马上运行(这也是为什么脚本不太在乎界面的原因之一)。
早期的批处理有类似的性质,当然现在的脚本更强大,有成型的程序结构能实现复杂的算法。

你在操作系统上玩WSH,就是这个性质。它可以调用系统的对象(EXCLE\ADO\word\acad), 操作这些对象,在技术上来说,能实现VBA的大部分功能,但它主要的用处还是为了操作系统提供一个简易快捷的程序。

在这方面VBA跟它的差别是,VBA功能强大一些,但VBA必须有一个寄生的宿主。用个例子说说吧,同样写一个对系统有用的,关于“修改注册表”的程序,VBS可以是一个简单到几十个字的文本文件,VBA那就得带着宿主——EXCEL的VBA往往是带着一个工作簿这样子,有点沉重的感觉——其实那个宿主文件(XLS之类)在这个场合下没有用对不对?

2.网页上的程序算法处理
不用我解释了吧。

你可以把网页上的脚本(主要是JAVASCRIPT,在IE上也可以用JS/VBS)等同于VBA的级别。VBA的意思是VB FOR APPLICATION ,它依附于一个应用程序(APPLICATION)工作,网页脚本也是依附在对应浏览器应用程序上工作。
网页为什么没有用VBA。。。 这个是MICROSOFT早期力不从心啊,它没有及时抢下网络市场建立标准,因为早期的NETSCAPE(网景,现在已经死得没有名气,当时可是跟GOOGLE一样朝气蓬勃)开拓了网页市场,定下的标准就是脚本,后来的W3C就认这个标准

TA的精华主题

TA的得分主题

发表于 2014-9-11 09:05 | 显示全部楼层
多说一点。
WINDOWS目前操作系统自带的脚本,除了WSH,还有SCRIPTING类库,它们有几个类别,文件系统(Scripting.Dictionary)、字典映射类(Scripting.Dictionary)、正则表达式(VBScript.RegExp)、加密解密类(Scripting.Encoder)
这些类库是自动化对象,不限于WSH,能被所有能创建自动化对象的程序以CREATEOBJECT的方式调用。

现实的例子,你在这个论坛就会经常看到在VBA中对关于SCRIPTING脚本系统类库 文件系统、字典映射类、正则表达式 的应用,它们如果是轻量级生成,尽量会用CREATEOBJECT产生。
VBA用这些系统类库的原因,是因为VBA本身没有内定的字典(MAP之类)功能,也没有过于丰富的字符串表达式处理功能(有是有的,字符函数有几个,但达到正则的能力就不行了)
VBA有文件处理能力,不过是早期的函数方式,不如SCRIPTING的FSO好用。

TA的精华主题

TA的得分主题

发表于 2014-9-11 09:37 | 显示全部楼层
WSH的强大和必要在于系统管理,如果是单机的话确实也就是些自动化的事。

但WSH真正的用途是针对微软的活动目录的,一个大型的AD域如果没有一套好用的脚本语言支撑的话,其管理无疑是不可能滴
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-19 09:44 , Processed in 0.032923 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表