news 2026/4/24 18:40:08

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/4/22 22:34:49

FSMN VAD时间戳精度:毫秒级输出对同步任务的意义

FSMN VAD时间戳精度:毫秒级输出对同步任务的意义 1. 引言:高精度语音活动检测的工程价值 在语音处理系统中,语音活动检测(Voice Activity Detection, VAD)是前端处理的关键环节。其核心任务是从连续音频流中准确识别…

作者头像 李华
网站建设 2026/4/18 0:22:20

VibeVoice-TTS部署实战:提升长语音合成效率的7个关键步骤

VibeVoice-TTS部署实战:提升长语音合成效率的7个关键步骤 1. 引言:业务场景与技术痛点 随着播客、有声书和虚拟对话系统等长文本语音内容需求的增长,传统文本转语音(TTS)系统在处理多说话人、长时长、高自然度对话场…

作者头像 李华
网站建设 2026/4/19 4:23:28

Speech Seaco Paraformer自动化脚本:批量任务调度部署方案

Speech Seaco Paraformer自动化脚本:批量任务调度部署方案 1. 背景与需求分析 随着语音识别技术在会议记录、访谈转录、客服质检等场景的广泛应用,单次处理一个音频文件的方式已无法满足实际业务中大规模语音数据处理的需求。尽管Speech Seaco Parafor…

作者头像 李华
网站建设 2026/4/21 0:35:10

从零开始玩转语音情感识别|基于科哥开发的SenseVoice Small

从零开始玩转语音情感识别|基于科哥开发的SenseVoice Small 1. 引言:为什么需要语音情感与事件识别? 在传统语音识别(ASR)系统中,我们通常只能获得“说了什么”的文本内容,而无法理解“说话时…

作者头像 李华
网站建设 2026/4/20 17:15:19

《创业之路》-859- 价值发现、价值实现、价值传递、价值回报是描述商业逻辑运行过程的动态流程,而商业模式画布是一种系统化表达商业模式的静态组成。

在商业模式分析中,价值发现、价值实现、价值传递、价值回报是描述商业逻辑运行过程的四个关键阶段,而商业模式画布(Business Model Canvas,即“9宫格”) 是一种系统化表达商业模式的工具。两者之间存在密切的对应关系&…

作者头像 李华
网站建设 2026/4/24 6:25:25

Qwen All-in-One文档生成:API接口说明自动创建教程

Qwen All-in-One文档生成:API接口说明自动创建教程 1. 引言 1.1 业务场景描述 在现代AI应用开发中,快速构建具备多任务能力的智能服务是提升产品竞争力的关键。然而,传统方案往往依赖多个独立模型协同工作——例如使用BERT类模型做情感分析…

作者头像 李华