news 2026/6/11 13:19:42

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VBScript办公自动化实战:无需打开Office,用独立脚本操作Word与Excel

目录

第六章:VBScript语言实现通用控制

6-1 VBScript语言的使用方法

6-2 在VBS中操作Word文件

6-3 VBS实例-1(将指定文件夹下的图片信息提取到Word表格-1)

6-4 读取Excel数据写入到Word

6-5 读取Word数据写入到Excel

6-6 Excel通用功能实例(拆分工作簿)


第六章:VBScript语言实现通用控制

6-1 VBScript语言的使用方法

VBScript是Visual Basic Script的简称,即 Visual Basic 脚本语言,有时也被缩写为VBS。它是一种微软环境下的轻量级的解释型语言。

VBScript生成的文件扩展名为vbs。

这里我们使用的是记事本来完成代码的编辑。在保存时注意编码方式的选择,最好为ANSI。

VBS的代码中不需要subend sub

在vbs中能运行的代码,在VBA中一定能运行

在VBA中能运行的代码,在VBS中不一定能运行,必须去掉VBA中特有的代码,比如:thisdocument、dimdoc as document、dir、Selection等

在记事本中写入如下代码,保存为vbs文件,运行:

Fori = 1 To 3

MsgBox i

Next

6-2在VBS中操作Word文件

在vbs中操作word文件,跟在Word VBA中写的代码基本相似。

在记事本中写入如下代码(要去掉注释符),保存为vbs文件,运行:

DimdocAPP, docFile, docOpen

SetdocAPP = CreateObject("word.application")

docAPP.Visible = True

SetdocFile = docAPP.Documents.Add

With docFile

.Range(0).Text = "Word VBA"

.SaveAs2 "e:\demo.docx"

.Close

End With

SetdocOpen = docAPP.Documents.Open("e:\test.docx")

MsgBox docOpen.Range(0, 11)

docOpen.Close

docAPP.Quit

SetdocAPP = Nothing

6-3 VBS实例-1(将指定文件夹下的图片信息提取到Word表格-1)

Sub将指定文件夹下的图片信息提取到Word表格()

Setfso = CreateObject("scripting.filesystemobject")'创建一个文件系统对象(fso

Setfd = fso.GetFolder("E:\Word VBA学习笔记\照片")'获取文件夹

SetdocAPP = CreateObject("word.application")

Setdoc = docAPP.Documents.Add

SettabObj = doc.Tables.Add(doc.Range, fd.Files.Count + 1, 3, 1)

tabObj.Cell(1, 1).Range.Text = "序号"

tabObj.Cell(1, 2).Range.Text = "图片名"

tabObj.Cell(1, 3).Range.Text = "图片"

num = 1

ForEachf In fd.Files

num = num + 1

tabObj.Cell(num, 1).Range.Text = num - 1

tabObj.Cell(num, 2).Range.Text = Split(f.Name, ".")(0)

tabObj.Cell(num, 3).Range.InlineShapes.AddPicture (f.Path)'插入图片

Next

doc.SaveAs2 "E:\Word VBA学习笔记\提取结果.docx"

docAPP.Quit

SetdocAPP = Nothing

End Sub

在记事本中写入如下代码(要去掉注释符),保存为vbs文件,运行:

Setfso = CreateObject("scripting.filesystemobject")'创建一个文件系统对象(fso

Setfd = fso.getfolder("E:\Word VBA学习笔记\照片")'获取文件夹

SetdocAPP = CreateObject("word.application")

Setdoc = docAPP.Documents.Add

SettabObj = doc.Tables.Add(doc.Range, fd.Files.Count + 1, 3, 1)

tabObj.Cell(1, 1).Range.Text = "序号"

tabObj.Cell(1, 2).Range.Text = "图片名"

tabObj.Cell(1, 3).Range.Text = "图片"

Num = 1

ForEachf In fd.Files

Num = Num + 1

tabObj.Cell(Num, 1).Range.Text = Num - 1

tabObj.Cell(Num, 2).Range.Text = Split(f.Name, ".")(0)

tabObj.Cell(Num, 3).Range.InlineShapes.AddPicture (f.Path)'插入图片

Next

doc.SaveAs2 "E:\Word VBA学习笔记\提取结果.docx"

docAPP.Quit

SetdocAPP = Nothing

在工具-引用中加载“Microsoft Scripting runtime”,就可以引用filesystemobject对象,输入代码时有代码提示

字典对象,也是加载“Microsoft Scripting runtime”

下面申明一个filesystemobject以作研究:

Subfilesystemobject对象()

Dimfso As New filesystemobject

'fso.MoveFile "C:\Users\Administrator\Desktop\a.vbs", "C:\Users\Administrator\Desktop\a.txt" 'MoveFile可以重命名文件

Setfs = fso.GetFile("C:\Users\Administrator\Desktop\新建文件夹\td001\0001.jpg")

Setfd = fso.GetFolder("C:\Users\Administrator\Desktop\新建文件夹")

ForEachf In fd.Files

Debug.Print f.Name

Next

End Sub

6-4读取Excel数据写入到Word

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

Sub读取Excel数据写入到Word()

SetdocAPP = CreateObject("word.application")

docAPP.Visible = True

Setdoc = docAPP.Documents.Add

Sett = doc.Tables.Add(doc.Range(0), 2, 6, 1)'创建26列有网格的表格

t.Cell(1, 1).Range.Text = "姓名"

t.Cell(1, 2).Range.Text = "第1季度"

t.Cell(1, 3).Range.Text = "第2季度"

t.Cell(1, 4).Range.Text = "第3季度"

t.Cell(1, 5).Range.Text = "第4季度"

t.Cell(1, 6).Range.Text = "总计"

SetxlApp = CreateObject("excel.application")

xlApp.Visible = True

Setwb = xlApp.Workbooks.Open("E:\Word VBA学习笔记\6-5.xlsx")

Setws = wb.Sheets("业绩表")

a = ws.usedrange.Rows.Count

Fori = 2 To a

Ifws.Cells(i, "f").Value >= 6000000Then

intlast = t.Rows.Last.Index

t.Rows.Add t.Rows(intlast)'在最后一行的前面插入一行

t.Cell(intlast, 1).Range.Text = ws.Cells(i, "a").Value

t.Cell(intlast, 2).Range.Text = ws.Cells(i, "b").Value

t.Cell(intlast, 3).Range.Text = ws.Cells(i, "c").Value

t.Cell(intlast, 4).Range.Text = ws.Cells(i, "d").Value

t.Cell(intlast, 5).Range.Text = ws.Cells(i, "e").Value

t.Cell(intlast, 6).Range.Text = ws.Cells(i, "f").Value

End If

Next

doc.SaveAs2 "E:\Word VBA学习笔记\结果.docx"

docAPP.Quit

SetdocAPP = Nothing

xlApp.Quit

SetxlApp = Nothing

End Sub

6-5读取Word数据写入到Excel

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

Word表格中的数据如下:

产品数量

a 23

b 58

a 41

b 29

c 88

c 102

a 34

Sub读取Word数据写入到Excel()

Setdic = CreateObject("scripting.dictionary")

SetdocAPP = CreateObject("word.application")

Setdoc = docAPP.Documents.Open("E:\Word VBA学习笔记\销售表.docx")

Sett = doc.Tables(1)

Fori = 2 To t.Rows.Count

cp = Split(t.Cell(i, 1).Range.Text, Chr(13))(0)

sl = Split(t.Cell(i, 2).Range.Text, Chr(13))(0)

dic(cp) = dic(cp) + Int(sl)

Next

SetxlApp = CreateObject("excel.application")

Setwb = xlApp.Workbooks.Add

Setws = wb.Sheets(1)

ws.Range("a1:b1") = Array("产品", "总数量")

ws.Range("a2").Resize(dic.Count, 2) = xlApp.Transpose(Array(dic.keys, dic.items))

wb.SaveAs "E:\Word VBA学习笔记\销售表.xlsx"

docAPP.Quit

xlApp.Quit

SetdocAPP = Nothing

SetxlApp = Nothing

End Sub

6-6 Excel通用功能实例(拆分工作簿)

将一个有很多工作表的工作簿拆分为只有一个工作表的工作簿

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

SubExcel通用功能实例拆分工作簿()

strPath = InputBox("请输入要拆分的Excel文件路径")

strSavePath = InputBox("请输入拆分后保存的路径")

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


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

本系列目录

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与模拟键盘输入

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 4:25:47

TensorFlow-v2.15实战教程:文本情感分析模型端到端部署

TensorFlow-v2.15实战教程:文本情感分析模型端到端部署 1. 引言与学习目标 随着自然语言处理技术的快速发展,文本情感分析已成为推荐系统、舆情监控和用户反馈分析中的关键能力。本文将基于 TensorFlow-v2.15 深度学习镜像环境,手把手带你完…

作者头像 李华
网站建设 2026/6/9 5:33:44

CubeMX生成安全互锁逻辑程序:工业控制核心要点

用CubeMX打造工业级安全互锁系统:从设计到落地的实战解析在自动化产线轰鸣运转的背后,有一道看不见的“数字护栏”默默守护着设备与人员的安全——这便是安全互锁逻辑。它不像算法优化那样炫技,也不像网络通信那样复杂,但它却是工…

作者头像 李华
网站建设 2026/6/10 19:54:47

零基础也能玩转Live Avatar,手把手教你用AI生成专属数字人视频

零基础也能玩转Live Avatar,手把手教你用AI生成专属数字人视频 1. 引言:为什么选择Live Avatar? 在数字人技术快速发展的今天,如何低成本、高质量地生成逼真的虚拟人物视频成为许多开发者和内容创作者关注的焦点。阿里联合高校开…

作者头像 李华
网站建设 2026/6/7 19:50:01

DDColor创意应用:为黑白电影片段上色的技术可行性

DDColor创意应用:为黑白电影片段上色的技术可行性 1. 技术背景与问题提出 在数字内容复兴的浪潮中,老照片和历史影像的修复与再生成成为AI图像处理的重要应用场景。其中,黑白影像因缺乏色彩信息,难以满足现代观众对视觉真实感和…

作者头像 李华
网站建设 2026/6/7 19:49:40

Hunyuan实战教程:诗歌与歌词的创造性翻译实现路径

Hunyuan实战教程:诗歌与歌词的创造性翻译实现路径 1. 引言 1.1 学习目标 本文旨在通过腾讯开源的 Hunyuan-MT-7B-WEBUI 翻译模型,系统性地指导开发者和语言爱好者如何实现诗歌、歌词等文学性文本的高质量创造性翻译。读者在完成本教程后将能够&#x…

作者头像 李华
网站建设 2026/6/6 11:06:12

系统提示词怎么设?system参数用法

系统提示词怎么设?system参数用法 1. 技术背景与核心问题 在大语言模型的微调和推理过程中,系统提示词(system prompt) 是一个至关重要的配置项。它定义了模型的“角色设定”或“行为准则”,直接影响模型输出的风格、…

作者头像 李华