news 2026/2/6 22:12:26

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/2/6 8:34:29

亲测Qwen3-4B-Instruct:AI写作效果超乎想象

亲测Qwen3-4B-Instruct:AI写作效果超乎想象 随着大模型技术的不断演进,轻量化、高性能的推理模型正逐步成为开发者和内容创作者的新宠。在众多开源语言模型中,阿里通义千问团队推出的 Qwen3-4B-Instruct 凭借其出色的逻辑理解能力与文本生成…

作者头像 李华
网站建设 2026/2/3 11:08:49

BGE-M3入门指南:检索模型基础概念解析

BGE-M3入门指南:检索模型基础概念解析 1. 引言 在信息检索、语义搜索和向量数据库等应用场景中,文本嵌入(embedding)模型扮演着至关重要的角色。近年来,随着多模态检索需求的增长,传统单一模式的嵌入模型…

作者头像 李华
网站建设 2026/1/30 13:11:43

Qwen-Image-Edit-2509学术研究指南:学生专属GPU优惠,1毛钱/分钟

Qwen-Image-Edit-2509学术研究指南:学生专属GPU优惠,1毛钱/分钟 你是不是也遇到过这样的情况?作为数字媒体专业的研究生,写论文需要大量图像处理实验——比如修改人物表情、替换背景、去除水印、调整构图。传统方式靠PS手动操作&…

作者头像 李华
网站建设 2026/2/4 20:25:51

​Word文档一打开就是只读模式?6种原因与全方位解决方法

着急要用的word文件,打开之后发现是只读模式,无法编辑该怎么办?其实这种情况会有很多种原因,所以取消只读方式的方法也有很多种。本篇文章将为大家梳理六种原因,并提供对应的详细解决方法,希望能够帮助大家…

作者头像 李华
网站建设 2026/2/6 20:40:16

Qwen3-Embedding-4B部署建议:中小算力设备适配方案

Qwen3-Embedding-4B部署建议:中小算力设备适配方案 1. 背景与挑战 随着大模型在检索、分类、聚类等任务中的广泛应用,高质量文本嵌入(Text Embedding)服务已成为智能系统的核心组件之一。Qwen3-Embedding-4B作为通义千问系列最新…

作者头像 李华
网站建设 2026/2/4 14:03:16

手把手教你用科哥二次开发的SenseVoice WebUI快速识别语音

手把手教你用科哥二次开发的SenseVoice WebUI快速识别语音 1. 简介与使用背景 随着多模态AI技术的发展,语音理解已不再局限于简单的“语音转文字”。现代语音模型需要同时具备语种识别、情感分析和声学事件检测能力,以满足智能客服、内容审核、会议记录…

作者头像 李华