VBScript系统级自动化:使用WScript对象外部操控Office与模拟键盘输入

目录

第七章:WScript控制Office

7-1 WScript常用属性(实例:交互性更好的自动拆分工作簿)

7-2 WScript对象的常用方法

7-3 用WshShell对象控制程序(另一种控制Word、Excel的方法)

7-4 用WshShell做机器人操作程序(以在Word中操作为例)

7-5 用WshShell做机器人操作程序(批量向Excel单元格写入数据)

7-6 综合运用(批量将Word中的图形保存为图片)


第七章:WScript控制Office

7-1 WScript常用属性(实例:交互性更好的自动拆分工作簿)

WScript对象,是vbs脚本访问Windows的根对象。

1.WScript.Arguments属性:获取指定文件的路径。(要把文件拖到下面代码所保存的vbs文件上才有效)

Fori = 0 To wscript.Arguments.Count - 1

MsgBox wscript.Arguments(i)

Next

2.脚本文件的路径与名称

msgbox WScript.ScriptFullName:返回当前运行脚本的完整路径(包括文件名)。

msgbox WScript.ScriptName: 返回当前运行脚本的文件名?

3.交互性更好的自动拆分工作簿

'把下面代码(去除subend sub)复制到记事本中,保存为vbs运行即可

Sub交互性更好的自动拆分工作簿()

strPath = wscript.arguments(0)'把要拆分的excel文件拖到这个vbs文件上,就能获取excel文件的路径

strSavePath = Replace(wscript.scriptfullname, wscript.scriptname, "")

SetxlApp = CreateObject("excel.application")

Setwb = xlApp.Workbooks.Open(strPath)

ForEachws In wb.Sheets

ws.Copy'工作表复制之后,会自动出现在新的工作簿,并且新的工作簿为活动工作簿

xlApp.ActiveWorkbook.SaveAs strSavePath & ws.Name & ".xlsx"

xlApp.ActiveWorkbook.Close

Next

xlApp.Quit

SetxlApp = Nothing

End Sub

7-2 WScript对象的常用方法

WScript.CreateObject: 创建对象?'WScript.可以省略

WScript.Quit: 强制脚本在任意时刻立即停止执行?

WScript.Sleep 休息时间(毫秒):该方法将脚本的执行挂起一段时间,然后接着执行。

WScript.Echo: 该方法输出一个消息框?

WScript.Sleep 1000'休息1

WScript.Echo "hello"

WScript.Echo "hello","yes","no"

7-3用WshShell对象控制程序(另一种控制Word、Excel的方法)

WshShell(Wscript.Shell):可以使用此对象访问Windows Shell的一些应用,

主要用于运行本地程序、操作注册表程序、创建快捷键、处理环境变量、发送键盘符等。

SetWshShell = WScript.CreateObject("WScript.Shell")

CurrentDirectory属性:返回当前vbs文件所在的目录路径(不包含文件名)。

MsgBox WshShell.CurrentDirectory

Run 方法: 在新过程中运行程序

run方法第二参数:

intWindowStyle 值说明
0隐藏窗口,并激活另一个窗口。
1激活并正常显示窗口。如果窗口处于最小化或最大化状态,则系统将其还原到原始大小和位置第一次显示窗口时推荐使用
2激活窗口并将其显示为最小化窗口(即获取焦点但保持最小化)。
3激活窗口并将其显示为最大化窗口
4按最近的窗口大小和位置显示窗口(不改变其当前最小化/最大化状态),活动窗口保持活动状态(不强制激活它)。
5激活窗口并按当前的大小和位置显示它(不改变其状态)。
6最小化指定的窗口,并按照 Z 顺序激活下一个顶层窗口。
7将窗口显示为最小化窗口活动窗口保持活动状态(不强制激活它)。
8将窗口显示为当前状态活动窗口保持活动状态(不强制激活它)。
9激活并正常显示窗口。如果窗口处于最小化或最大化状态,则系统将其还原到原始大小和位置还原最小化窗口时推荐使用
10根据启动应用程序的程序状态来设置显示状态。

wshshell.Run "excel.exe"

wshshell.Run "WINWORD.exe"

AppActivate 方法:激活应用程序窗口。指定要激活哪个应用程序。它可以是包含应用程序的标题(和出现在标题栏中的一样)或过程 ID 的字符串。

wshshell.AppActivate "word"'只是打开了word程序,没有打开word文档时,可以这样

wshshell.AppActivate "123.docx"'123.docxword文档的名称

wshshell.AppActivate "12508"'12508为进程中应用程序的id

7-4用WshShell做机器人操作程序(以在Word中操作为例)

SendKeys 方法:将一个或多个键击发送到活动窗口(仿佛是在键盘上击键一样)。

发送普通字符:

Sub发送普通字符()

Setwshshell = CreateObject("wscript.shell")

With wshshell

.AppActivate ("123.docx")'激活123.docx,窗口不可以是最小化状态,否则无法激活

wscript.Sleep 3000'需要延迟一下,不然容易出错

.SendKeys "100"

.SendKeys "Are you ok?"'结果跟中英文输入法状态有关(需要在英文状态下)

'.SendKeys "我来了(不能输入中文)"

.SendKeys "{+}"'输入+

End With

End Sub

有特殊意义的符号转义为普通字符:

名称表示方法特殊意义
加号{+}SHIFT(单纯输入一个+号,代表SHIFT键)
插入记号{^}CTRL
百分号{%}ALT
波浪符(非符号){~}ENTER(单纯输入一个~号,表示回车键)
左大括号{{}转义(表示字面意义的左大括号{
右大括号{}}转义(表示字面意义的右大括号}
左中括号{[}无特殊含义(表示字面意义的左中括号[
右中括号{]}无特殊含义(表示字面意义的右中括号]

键盘上的键位代码:

按键名称SendKeys中的表示方法
Backspace(退格键){BACKSPACE},{BS},{BKSP}
Break(暂停键){BREAK}
Caps Lock(大写锁定键){CAPSLOCK}
Delete(删除键){DELETE},{DEL}
Down Arrow(向下键){DOWN}
End{END}
Enter(回车键){ENTER},~
Esc(退出键){ESC}
Help(帮助键){HELP}
Home{HOME}
Insert(插入键){INSERT},{INS}
Left Arrow(向左键){LEFT}
Num Lock(数字锁定键){NUMLOCK}
Page Down{PGDN}
Page Up{PGUP}
Print Screen(截屏键){PRTSC}
Right Arrow(向右键){RIGHT}
Scroll Lock{SCROLLLOCK}
Tab(制表键){TAB}
Up Arrow(向上键){UP}
F1{F1}
F2{F2}
F3{F3}
F4{F4}
F5{F5}
F6{F6}
F7{F7}
F8{F8}
F9{F9}
F10{F10}
F11{F11}
F12{F12}
F13{F13}
F14{F14}
F15{F15}
F16{F16}

7-5用WshShell做机器人操作程序(批量向Excel单元格写入数据)

中文输入取巧办法。将中文复制到剪贴版中,然后再粘贴出来。

echo ***| clip.exe 就是用DOS命令把***这串字符写入剪贴板了,完整写法如下:

wshshell.run "cmd.exe /c echo 你好| clip.exe",0'clip.exe是剪贴板,0可以避免闪屏

以下代码要在记事本中保存为vbs文件,才能查看效果

Sub批量向Excel单元格写入数据()

Setwshshell = CreateObject("wscript.shell")

With wshshell

.AppActivate "1.xlsx"

ForEachar In Array("上海", "成都", "北京")

n = n + 1

.SendKeys n

.SendKeys "{RIGHT}"'按向右方向键

wscript.Sleep 200

.Run "cmd.exe /c echo " & ar & "|clip.exe", 0'复制ar到剪贴板

wscript.Sleep 200

.SendKeys "^v"'^v表示ctrl+v

wscript.Sleep 200

.SendKeys "{DOWN}{LEFT}"

wscript.Sleep 200

Next

End With

End Sub

7-6综合运用(批量将Word中的图形保存为图片)

'以下代码要在记事本中保存为vbs文件,才能查看效果(去除subend sub,如果会出错就把注释去掉

Sub批量将Word中的图形保存为图片()

SetdocAPP = CreateObject("word.application")

docAPP.Visible = True

Setwshshell = CreateObject("wscript.shell")

With wshshell

.Run "mspaint.exe"'运行画图程序,可以用.run "%windir%\system32\mspaint.exe"

Setdoc = docAPP.Documents.Open(.currentdirectory & "\图形.docx")' .currentdirectory返回当前vbs文件所在目录路径

Fori = 1 To doc.Shapes.Count

.AppActivate "图形.docx"

wscript.Sleep 1000

doc.Shapes(i).Select

wscript.Sleep 1000

.SendKeys "^c"

wscript.Sleep 1000

.AppActivate "画图"

wscript.Sleep 1000

.SendKeys "^v"

wscript.Sleep 2000

.SendKeys "%fa"'alt+f+a,调出另存为对话框

wscript.Sleep 2000

.Run "cmd.exe /c echo " & doc.Shapes(i).Name & "|clip.exe", 0'复制图片名称

wscript.Sleep 1000

.SendKeys "^v"

wscript.Sleep 2000

.SendKeys "{ENTER}"'按回车保存

wscript.Sleep 1000

Next

.SendKeys "%fx"'alt+f+x,退出画图程序

End With

docAPP.Quit

SetdocAPP = Nothing

End Sub

保存时要处理英文输入状态

画图程序的编辑区域大小要调整为图片的大小,点击“重新调整大小”输入高度、宽度即可

'以下代码要在记事本中保存为vbs文件,才能查看效果(去除subend sub,如果会出错就把注释去掉

Sub批量将Word中的图形保存为图片无注释()

SetdocAPP = CreateObject("word.application")

docAPP.Visible = True

Setwshshell = CreateObject("wscript.shell")

With wshshell

.Run "mspaint.exe"

Setdoc = docAPP.Documents.Open(.currentdirectory & "\图形.docx")

Fori = 1 To doc.Shapes.Count

.AppActivate "图形.docx"

wscript.Sleep 1000

doc.Shapes(i).Select

wscript.Sleep 1000

.SendKeys "^c"

wscript.Sleep 1000

.AppActivate "画图"

wscript.Sleep 1000

.SendKeys "^v"

wscript.Sleep 2000

.SendKeys "%fa"

wscript.Sleep 2000

.Run "cmd.exe /c echo " & doc.Shapes(i).Name & "|clip.exe", 0

wscript.Sleep 1000

.SendKeys "^v"

wscript.Sleep 2000

.SendKeys "{ENTER}"

wscript.Sleep 1000

Next

.SendKeys "%fx"

End With

docAPP.Quit

SetdocAPP = Nothing

End Sub


计算机科学与技术 & 计算机网络技术:双专业课程体系完全导航指南

本系列目录

1、Word VBA编程入门指南:从对象模型、流程控制到数组与字典的完整教程

2、Word VBA 对象模型精讲:从Document到Character的文本逐级控制与自动化实战

3、Word VBA 表格自动化实战:从宏录制到Table对象,掌握多表合并与批量生成

4、Word VBA 图形与图表自动化:从批量生成到环形阵列,掌握文档可视化排版

5、Word与Excel VBA协同实战:构建双向数据通道,实现跨软件流程自动化

6、VBScript办公自动化实战:无需打开Office,用独立脚本操作Word与Excel

7、VBScript系统级自动化:使用WScript对象外部操控Office与模拟键盘输入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1165469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NPP 草原:南非图文巴,1949-1990 年,R1

NPP Grassland: Towoomba, South Africa, 1949-1990, R1 简介 本数据集包含七个文本格式 (.txt) 的数据文件。这些文件提供了在南非图文巴人工建立的草原稀树草原研究地点进行的生物量估算、土壤碳 (C)、氮 (N) 和磷 (P) 测量数据。该研究地点是长期施肥试验的一部分&#xf…

NPP 草原:南非图文巴,1949-1990 年,R1

NPP Grassland: Towoomba, South Africa, 1949-1990, R1 简介 本数据集包含七个文本格式 (.txt) 的数据文件。这些文件提供了在南非图文巴人工建立的草原稀树草原研究地点进行的生物量估算、土壤碳 (C)、氮 (N) 和磷 (P) 测量数据。该研究地点是长期施肥试验的一部分&#xf…

GEE初学:谷歌地球引擎GEE入门指南(最新注册全流程)

引言 谷歌地球引擎(Google Earth Engine, GEE)是一个用于全球尺度地理空间数据分析的强大平台。该平台提供数十年卫星影像和环境数据集的免费访问权限,推动遥感分析的普及化,并支持海量数据的云端处理。 本教程将带您完成从账号创建到首个资源(asset)可视化的完整流程,…

AI应用架构师打造的AI驱动虚拟旅游,树立行业标杆

从0到1构建AI驱动的虚拟旅游应用:AI应用架构师的实战指南 摘要/引言 问题陈述 随着人们对旅游体验多样化需求的增长,传统的实体旅游受到时间、空间以及各种现实因素的限制。如何突破这些限制,为用户提供沉浸式、个性化且不受地理和时间约束的旅游体验,成为旅游行业亟待解…

现代高级语言 JIT 编译优化技术——逃逸分析(Escape Analysis)

现代高级语言 JIT 编译优化技术——逃逸分析(Escape Analysis)逃逸分析的定义 逃逸分析(Escape Analysis) 是一种在编译期间(对于Java等语言是在即时编译阶段)进行的静态分析技术。它的核心目的是分析一个对…

CRM系统如何通过AI与自动化重塑企业销售效能

在数字化转型浪潮中,客户关系管理(CRM)系统已从简单的客户信息记录工具,演进为企业运营的核心中枢。一款价值型CRM,其关键在于能否将前沿技术深度融入业务场景,实现降本增效。以建广数科自主开发的智盈客CR…

.Net 中的 ActivatorUtilitiesConstructor 特性

.Net 中的 ActivatorUtilitiesConstructor 特性 [ActivatorUtilitiesConstructor] 是 .NET 依赖注入中的一个特性,用于指导 Microsoft.Extensions.DependencyInjection(MSDI)在类型有多个构造函数时,选择哪个构造函数进行实例化。…

Open Code教程(四)| 高级配置与集成

Open Code教程(四)| 高级配置与集成OpenCode 高级配置与集成一、前言二、本地模型配置方式一:Ollama(推荐)方式二:LM Studio方式三:llama.cpp本地模型推荐三、AGENTS.md 配置创建方式推荐结构高…

django-flask基于python的大学生班级档案管理系统

目录django-flask基于python的大学生班级档案管理系统摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!django-flask基于python的大学生班级档案管理系统摘要 该系统基于Python语…

什么是SR-MPLS

文章目录为什么需要SR-MPLSSR-MPLS vs MPLSSR-MPLS的工作原理从SR-MPLS到SRv6SR-MPLS(Segment Routing MPLS,基于MPLS转发平面的段路由)是基于源路由理念而设计的在网络上转发数据包的一种协议。SR-MPLS的核心思想是将报文转发路径切割成不同…

救命神器10个一键生成论文工具,专科生毕业论文轻松搞定!

救命神器10个一键生成论文工具,专科生毕业论文轻松搞定! AI 工具如何让论文写作变得轻松 对于许多专科生来说,毕业论文的撰写无疑是一道难以逾越的难关。从选题到开题,从查找到写作,每一个环节都可能让人感到力不从心。…

django-flask基于python的大学生创新计划项目管理web系统

目录Django-Flask 基于 Python 的大学生创新计划项目管理 Web 系统摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!Django-Flask 基于 Python 的大学生创新计划项目管理 Web 系统…

打开软件出现找不到d3dx9_36.dll如何修复? 附免费下载方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

学霸同款2026 TOP8 AI论文软件:本科生毕业论文必备测评

学霸同款2026 TOP8 AI论文软件:本科生毕业论文必备测评 2026年学术写作工具测评:为何需要一份精准榜单? 随着AI技术在学术领域的深入应用,越来越多的本科生开始依赖AI工具辅助论文写作。然而,面对市场上琳琅满目的AI论…

django-flask基于python的大学生公益活动志愿服务系统的设计与实现

目录 摘要 关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 摘要 随着社会对公益事业的关注度不断提升,大学生参与志愿服务活动的需求日益增长。传统的志愿服务管理方式…

软件打开提示找不到d3dx9_30.dll文件 如何修复? 附免费下载方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

django-flask基于python的大学生兼职网站的设计与实现

目录摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 随着互联网技术的快速发展,在线兼职平台已成为大学生获取社会实践机会的重要渠道。本文基于Python技术栈&…

计算机毕业设计springboot罕见病科普交流平台 SpringBoot 驱动的“罕见病智慧科普与互动服务系统” 基于 SpringBoot 的“罕见病知识共享与病友互助平台”

计算机毕业设计springboot罕见病科普交流平台fhi4o8jo (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。当罕见病遇上互联网,信息鸿沟便有望被填平。面对种类繁多、资料…

Open Code教程(一)| 快速入门:安装配置与基础使用

Open Code教程(一)| 快速入门:安装配置与基础使用OpenCode 快速入门:安装配置与基础使用一、什么是 OpenCode核心特点开发团队发布时间线相关开源项目二、OpenCode vs Claude Code 对比选择建议三、网络环境说明需要科学上网无需科…

【实测有效】分享5款亲测好用的论文降AI神器,轻松解决AI率过高问题,通过AI检测

现在写论文,真正难住人的不一定是内容。有时候,明明自己一字一句写完了,扔进检测系统一查——直接提示“AI生成内容过多,禁止提交。”真的是非常搞心态。 你认真整理的逻辑、反复推敲的结构,在系统眼里,就…