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

目录

第五章:Word与Excel双剑合璧

5-1 如何在Word中创建和获取Excel程序?

5-2 在Word中读取Excel单元格数据-1(单元格获取法)

5-3 在Word中读取Excel单元格数据-2(数组获取法)

5-4 Word中处理Excel数据并将结果写入Word

5-5 实例:Word中将Excel数据拆分到Word文档

5-6 在Word中将数据写入Excel单元格的几种方法

5-7 Word数据写入Excel实例-1

5-8 Word数据写入Excel实例-2


第五章:Word与Excel双剑合璧

5-1 如何在Word中创建和获取Excel程序?

Sub创建与关闭excel对象()

DimxlApp As Object, wbOpen, ws

SetxlApp = CreateObject("excel.application")

xlApp.Visible = True'显示出excel程序

SetwbOpen = xlApp.Workbooks.Open(ThisDocument.Path & "\1.xlsx")'打开工作簿

Setws = wbOpen.Sheets(1)

Debug.Print ws.Name

wbOpen.Close'关闭工作簿

xlApp.Quit'退出程序

SetxlApp = Nothing'清空内存

End Sub

5-2在Word中读取Excel单元格数据-1(单元格获取法)

Sub读取Excel单元格数据()

DimxlApp, wb, ws, intLastRow As Integer, a As Integer, v1, v2, v3

SetxlApp = CreateObject("excel.application")

xlApp.Visible = True

Setwb = xlApp.Workbooks.Open(ThisDocument.Path & "\demo.xlsx")

Setws = wb.Sheets("员工表")

intLastRow = ws.usedrange.Rows.Count

Fora = 2 To intLastRow

v1 = ws.Cells(a, 1).Value

v2 = ws.Cells(a, 2).Value

v3 = ws.Cells(a, 3).Value

Debug.Print v1, v2, v3

Next

xlApp.Quit

SetxlApp = Nothing

End Sub

5-3在Word中读取Excel单元格数据-2(数组获取法)

Sub读取Excel单元格数据2()

DimxlApp, wb, ws, intLastRow As Integer, a As Integer, v1, v2, v3, arr

SetxlApp = CreateObject("excel.application")

xlApp.Visible = True

Setwb = xlApp.Workbooks.Open(ThisDocument.Path & "\demo.xlsx")

Setws = wb.Sheets("员工表")

intLastRow = ws.usedrange.Rows.Count

arr = ws.Range("a2:c" & intLastRow)

Fori = 1 To UBound(arr)

v1 = arr(i, 1)

v2 = arr(i, 2)

v3 = arr(i, 3)

Debug.Print v1, v2, v3

Next

'也可以用下面方法获取

Fori = 1 To UBound(arr)

ar = xlApp.Index(arr, i)'应用excelindex函数

v1 = ar(1)

v2 = ar(2)

v3 = ar(3)

Debug.Print v1, v2, v3

Next

xlApp.Quit

SetxlApp = Nothing

End Sub

Excel与Word双剑合壁:

office家庭产品:word、excel、access、powerpoint...都是使用VBA语言。

不同点:它们的对象模型不一样(workbooks是excel中的,document是word中的)

应用程序之间可以实现相互访问

要想访问Excel,首先要建立对它的连接

1.前期绑定:工具--引用--Microsoft Excel14.0 Object Library

2.后期绑定:Setwdap=createobject("Excel.application")

Sub使用前期绑定更方便代码输入()

DimxlApp As Excel.Application'声明wapp变量为Excel程序对象类型

Dimwb As Workbook

SetxlApp = New Excel.Application'创建一个excel对象

xlApp.Visible = True'显示出excel对象

Setwb = xlApp.Workbooks.Add'新建一个工作簿

wb.Sheets(1).Range("a1") = 20'sheets没有申明变量,所以输入其属性、方法时没有代码提示

Dimws As Sheets

Setws = wb.Sheets

SetxlApp = Nothing

End Sub

5-4 Word中处理Excel数据并将结果写入Word

Sub处理Excel数据并将结果写入Word()

DimxlApp, wb, ws, intLastRow As Integer, a As Integer, v1, v2, v3, arr, t As Table

SetxlApp = CreateObject("excel.application")

xlApp.Visible = True

Sett = ThisDocument.Tables.Add(Selection.Range, 1, 3, 1)'最后一个参数(1)表示表格有网格

t.Cell(1, 1).Range.Text = "姓名": t.Cell(1, 2).Range.Text = "年龄": t.Cell(1, 3).Range.Text = "籍贯"

Setwb = xlApp.Workbooks.Open(ThisDocument.Path & "\demo.xlsx")

Setws = wb.Sheets("员工表")

intLastRow = ws.usedrange.Rows.Count

arr = ws.Range("a2:c" & intLastRow)

Fori = 1 To UBound(arr)

v1 = arr(i, 1)

v2 = arr(i, 2)

v3 = arr(i, 3)

Ifv2 >= 30Then

t.Select

Selection.InsertRowsBelow 1

a = t.Rows.Last.Index

t.Cell(a, 1).Range.Text = v1

t.Cell(a, 2).Range.Text = v2

t.Cell(a, 3).Range.Text = v3

End If

Next

xlApp.Quit

SetxlApp = Nothing

End Sub

5-5实例:Word中将Excel数据拆分到Word文档

Sub将Excel数据拆分到Word文档()

DimxlApp, wb, ws, doc As Document

SetxlApp = CreateObject("excel.application")

Setwb = xlApp.Workbooks.Open(ThisDocument.Path & "\名篇.xlsx")

Setws = wb.Sheets("sheet1")

arr = ws.Range("a2:b" & ws.usedrange.Rows.Count).Value

Forn = 1 To UBound(arr, 1)

Setdoc = Documents.Add

doc.Range(0).Text = arr(n, 1) & Chr(13)

Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter'居中

Selection.EndKey wdStory

Selection.Text = arr(n, 2)

Selection.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0.75)'首先缩进0.75厘米,CentimetersToPoints(0.75)表示将0.75厘米转化为磅值

doc.SaveAs2 ThisDocument.Path & "\结果\" & arr(n, 1) & ".docx"

doc.Close

Next

wb.Close

xlApp.Quit

SetxlApp = Nothing

End Sub

5-6在Word中将数据写入Excel单元格的几种方法

Sub将数据写入Excel单元格的几种方法()

DimxlApp, wb, ws, arr1(1 To 3, 1 To 2) As Integer, arr2

arr2 = Array(Array(1, 2), Array(10, 20), Array(100, 200))'一维套一维的数组

SetxlApp = CreateObject("excel.application")

xlApp.Visible = True

arr2 = xlApp.Transpose(xlApp.Transpose(arr2))'转置

Setwb = xlApp.Workbooks.Add'创建工作簿

Setws = wb.Sheets(1)

ws.Range("a1") = "word VBA"'单值

ws.Range("a2:c2") = Array(100, 200, 300)'一维数组

ws.Range("a3:b5") = arr1'二维数组

ws.Range("a6:b8") = arr2'转置后的二维数组

xlApp.Quit

SetxlApp = Nothing

End Sub

5-7 Word数据写入Excel实例-1

WORD中的表格如下:

工号姓名性别年龄入职时间身高学历职务

NED001 阿汤男 30 2006/11/25 171 硕士普工

NED002 陈虹女 29 2005/08/20 169 本科普工

SubWord数据写入Excel实例()

DimintRow As Integer, intAge As Integer, arr(), i As Integer, t As Table

DimstrId As String, strName As String, strSex As String, dat As Date, strH As String, strX As String, strZ As String

Sett = ThisDocument.Tables(1)

ForintRow = 2 To t.Rows.Count

intAge = Split(t.Cell(intRow, 4).Range.Text, Chr(13))(0)

IfintAge >= 30Then

strId = Split(t.Cell(intRow, 1).Range.Text, Chr(13))(0)

strName = Split(t.Cell(intRow, 2).Range.Text, Chr(13))(0)

strSex = Split(t.Cell(intRow, 3).Range.Text, Chr(13))(0)

dat = Split(t.Cell(intRow, 5).Range.Text, Chr(13))(0)

strH = Split(t.Cell(intRow, 6).Range.Text, Chr(13))(0)

strX = Split(t.Cell(intRow, 7).Range.Text, Chr(13))(0)

strZ = Split(t.Cell(intRow, 8).Range.Text, Chr(13))(0)

n = n + 1

ReDimPreserve arr(1 To n)

arr(n) = Array(strId, strnmae, strSex, intAge, dat, strH, strX, strZ)

End If

Next

SetxlApp = CreateObject("excel.application")

xlApp.Visible = True

Setwb = xlApp.Workbooks.Add

arr = xlApp.Transpose(xlApp.Transpose(arr))

wb.Sheets(1).Range("a1").Resize(n, 8) = arr

wb.SaveAs ThisDocument.Path & "\筛选结果.xlsx"

xlApp.Quit

SetxlApp = Nothing

End Sub

5-8 Word数据写入Excel实例-2

WORD 中有4个表格(每季度一张表),表格样式如下:

1 季度统计表

产品业绩(万元)

a 789

b 9955

c 785

SubWord数据写入Excel实例2()

Dimt As Table, intRow As Integer, q, v0, v1, v2, xlApp, wb, ws, i As Integer

SetxlApp = CreateObject("excel.application")

Setwb = xlApp.Workbooks.Add

Setws = wb.Sheets(1)

ws.Cells(1, 1) = "季度": ws.Cells(1, 2) = "产品": ws.Cells(1, 3) = "业绩"

ForEacht In ThisDocument.Tables

q = q + 1

ForintRow = 2 To t.Rows.Count

v0 = "第" & q & "季度"

v1 = Split(t.Cell(intRow, 1).Range.Text, Chr(13))(0)

v2 = Split(t.Cell(intRow, 2).Range.Text, Chr(13))(0)

i = i + 1

ws.Range("a" & i + 1).Resize(1, 3) = Array(v0, v1, v2)

Next

Next

wb.SaveAs ThisDocument.Path & "\提取结果.xlsx"

xlApp.Quit

SetxlApp = Nothing

End Sub


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

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

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

相关文章

【计算机毕业设计案例】基于SpringBoot+Vue的旅游管理系统景点信息管理、酒店信息管理、美食信息管理(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

基于Java的家庭再生资源智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 家庭再生资源智慧管理系统旨在替代传统单一功能的毕业设计,提供一个全面的家庭管理解决方案。该系统涵盖了会员与家庭成员、财务账户及记录、任务和日程安排等24个主要模块,能够帮助用户高效地管理和优化家务生活。…

基于Java的家庭保洁智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 家庭保洁智慧管理系统旨在为中小型家庭保洁企业构建一个全面、高效的信息管理平台,涵盖会员、员工、服务项目等多个模块。系统设计与实现兼顾实用性及创新性,摒弃了“烂大街”的选题,通过引入职位管理和…

基于Java的家具进销存智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 家具进销存智慧管理系统主要功能模块包括公司资料管理、供应商资料管理等14个子系统,支持普通员工和部门领导角色进行数据录入与审核。该系统的开发背景在于传统管理模式繁琐且不便于追踪信息,而此系统通过SpringM…

大数据领域数据可视化:增强数据可视化的逻辑性

大数据领域数据可视化:增强数据可视化的逻辑性 关键词:大数据、数据可视化、逻辑性、图表类型、数据解读 摘要:本文聚焦于大数据领域的数据可视化,着重探讨如何增强数据可视化的逻辑性。首先介绍了数据可视化在大数据时代的背景和…

企业数字化转型秘籍大揭秘,AI应用架构师的AI方案详细拆解

企业数字化转型秘籍大揭秘:AI应用架构师的AI方案详细拆解 1. 引入与连接:当“老企业”遇到“新问题” 1.1 一个真实的痛点故事 某传统制造企业的车间主任老张最近很头疼: 生产线经常因为设备故障停摆,每次维修要等2小时&#xff0…

基于Java的宣传视频智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 宣传视频智慧管理系统摒弃传统“烂大街”选题,提供会员、操作员、标签等全面管理功能。系统采用SpringMVC框架与MySQL数据库构建,设计清晰模块化结构,满足不同角色需求,并支持数据可视化展示…

AI 生成 PPT 真能替代人工吗?多款工具深度测试

在职场中,每到年终,制作年终总结和下一年工作计划的PPT,就成了众多职场人的噩梦。熬夜改报告是常有的事,好不容易有了点思路,却又在搭建内容框架时犯了难,逻辑混乱,条理不清。好不容易把内容凑齐…

基于Java的家具厂智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 家具厂智慧管理系统旨在优化传统管理模式,提升管理效率与数据准确性。相比常规系统,它不仅具备客户、产品、订单等多维度精细化管理能力,并引入了仓库、物流公司及原材料的全程监控机制;还涵…

什么是安全运营中心(SOC)

文章目录 SOC有什么作用SOC常用的工具和技术SOC的价值华为SOC相关的解决方案 安全运营中心(SOC),也称为信息安全运营中心 (Information Security Operations Center,ISOC),是一个集人员、流程和…

7个实用技巧,通过YashanDB实现数据结构优化

在现代数据库系统中,性能瓶颈和数据一致性问题是常见且挑战较大的技术难题。随着业务数据量和复杂度的快速增长,合理优化数据结构成为提升系统整体性能和稳定性的关键途径。YashanDB作为一款支持单机、分布式和共享集群多种部署形态的高性能数据库&#…

7个实用技巧提升YashanDB数据库的安全性

在当前的数据驱动时代,数据库的安全性至关重要。数据库常常是攻击的目标,而对数据的保护不仅关乎企业的商业利益,还涉及遵循法律和合规要求。因此,确立强有力的安全措施以保护数据库的完整性和机密性是每个DBA和企业必须关注的重点…

什么是SPFC

文章目录为什么需要SPFCSPFC的技术价值SPFC(Subscriber Priority-based Flow Control)是基于用户优先级的流量控制,它是一种对指定用户流量或者拥有某些特征的流量进行的优先级流量控制的技术。对于SPFC指定用户流量的队列,当队列…

如何设计一个网关

如何设计一个网关:从概念到实践的全方位指南 1. 引入与连接:网关的核心价值与定位 1.1 故事引入:企业面临的网络挑战 想象一下,你是一家快速发展的电商企业的技术负责人。几年前,你的系统还是一个单体应用,所有功能都集中在一个代码库中,部署在几台服务器上。那时,用…

全网最全自考必备TOP10 AI论文平台测评

全网最全自考必备TOP10 AI论文平台测评 2026年自考AI论文平台测评:为什么需要这份榜单? 随着人工智能技术的不断进步,越来越多的自考学生开始依赖AI写作工具来提升论文撰写效率。然而,面对市场上琳琅满目的平台,如何选…

六大AI论文平台排名:智能降重与改写工具解析

开头总结工具对比(技能4) �� 为帮助学生们快速选出最适合的AI论文工具,我从处理速度、降重效果和核心优势三个维度,对比了6款热门网站,数据基于实际使用案例: 工具名称 处理速度 降…

学霸同款10个AI论文工具,专科生轻松搞定毕业论文!

学霸同款10个AI论文工具,专科生轻松搞定毕业论文! AI 工具如何让论文写作变得轻松高效 对于专科生来说,撰写毕业论文往往是一项既繁琐又充满挑战的任务。从选题到资料收集,从大纲搭建到内容撰写,每一个环节都需要大量的…

手把手教你用6款免费AI论文神器:选题到降重一站式搞定

你是不是正在为论文而焦虑?从选题的迷茫,到文献的浩如烟海,再到导师那句“再改改”的恐惧,每一步都让人头大。别担心,你的“AI学术搭子”已经就位! 作为一名曾经的“论文困难户”,我深知其中的…

【毕业设计】基于springboot的大学生在线考试平台(源码+文档+远程调试,全bao定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【课程设计/毕业设计】基于springboot的大学生在线考试平台【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…