ExcelVBA一键生成Word对账函
VBA说
共 5112字,需浏览 11分钟
· 2022-07-27
Excel信息生成Word文档,是很多朋友经常遇到的场景,一条两条信息还好,但是如果有几百上千条信息,手动的去把excel内部的数据挪到Word里面,就很麻烦而且不现实了。这个时候,用VBA来支持,就能极大的提高效率。
今天就来讲一个典型的案例,本案例涉及知识点较多,例如:修改Word的页眉页脚内容(包含页码)、修改Word中的表格、新建文件夹等等,非常的经典。
可以说,把这个案例搞清楚了,Excel与Word数据交互的需求基本都不在话下了。
需求描述
我有这样两个文件:
Excel数据源
Word模板
我的具体需求:
取数据源表中的供应商,填至供应商名称栏位(尊敬的:后面);
思路:找到关键字之后,光标挪动写入内容
取数据源表中的供应商的往来业务数据,插入至格式中的“1. 本公司与贵公司的往来账项”下的表格;表格后的内容自动下移。
思路:根据每个供应商的数据条数来新增不同行数。
保存文件时以供应商名称保存为文件名称,每个供应商独立一个文件
思路:保存文件的时候,文件名注意一下
帮我加上页脚的页数“第几页,共几页
思路:修改页眉页脚内容
具体代码和效果
具体代码如下:
Public info() '定义动态数组,存储每个供应商的具体信息
Public 供应商
Public doc
Public wd
Public PathG
Public i
Public docname
Public 贷方合计
Public 借方合计
Sub 拆分excel至word()
Call 创建文件夹
0 =
0 =
Set doc = CreateObject("word.application") '创建Word对象
arr = Sheet2.UsedRange '把数据2中的数据赋值给数组arr,这里也可以写成arr=worksheets("数据2")
Set d = CreateObject("scripting.dictionary") '创建字典,为了去重获取供应商名称
For i = 2 To UBound(arr)
13)) = "" '去重写入字典
Next
d.keys '这里供应商就是所有供应商的数组 =
'显示进度条
On Error GoTo 1
For i = 0 To UBound(供应商)
'-------------------------------
Set wd = doc.Documents.Open(ThisWorkbook.Path & "\模板.docx") '打开模板
True =
For j = 1 To UBound(arr)
If arr(j, 13) = 供应商(i) Then
docname = arr(j, 12) '供应商编码,作为文档保存时候的命名
k = k + 1
ReDim Preserve info(1 To 6, 1 To k)
k) = arr(j, 1) '制单日期
k) = arr(j, 9) '科目名称
k) = arr(j, 3) '摘要
k) = arr(j, 4) '借方
k) = arr(j, 5) '贷方
k) = arr(j, 6) '会计期间
Val(info(4, k)) + 借方合计 =
Val(info(5, k)) + 贷方合计 =
End If
Next j
Call 写入word
0 =
0 =
k = 0
Next i
1: doc.Quit '关闭Word程序窗口
MsgBox "完成!"
End Sub
Sub 写入word() 'endkey方法
'//写入供应商
True =
With doc.Selection.Find
.ClearFormatting
True =
False =
t = .Execute(FindText:="尊敬的") '查找尊敬的三个字的位置
End With
unit:=5
供应商(i) & ":"
'//写入往来账项
'--调整表格--
Set tbl = wd.Tables(1)
'选中需要填入数据的表格'不选中,后面无法插入行,InsertRowsBelow是selection的方法
If UBound(info, 2) > 1 Then doc.Selection.InsertRowsBelow UBound(info, 2) - 1 '根据总数据条数插入行,如果只有一条数据,不插入行
UBound(info, 2) '根据总数据条数插入行,如果只有一条数据,不插入行
"网格型" =
'--写入数据--
For r = 1 To UBound(info, 2)
+ 1, 1).Range = info(1, r)
+ 1, 2).Range = info(2, r)
+ 1, 3).Range = info(3, r)
+ 1, 4).Range = info(4, r)
+ 1, 5).Range = info(5, r)
+ 1, 6).Range = info(6, r)
Next
+ 1, 4).Range = 借方合计
+ 1, 5).Range = 贷方合计
+ 1, 6).Range = 借方合计 - 贷方合计
Call 添加页眉页脚
Filename:=PathG & "\" & docname & ".docx" '----保存到C盘
0
End Sub
Sub 创建文件夹()
'FSO方式
PathG = ThisWorkbook.Path & "\往来对账函"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(PathG) = True Then
'//删除文件夹
MkDir PathG
Else
MkDir PathG '//创建文件夹
End If
End Sub
Sub 添加页眉页脚()
'//添加页眉
With wd.Sections(1).Headers(1)
Set Rng = .Range
供应商(i) =
.Range.Fields.Update
2 =
End With
'删除页眉横线
With wd.Styles("页眉").ParagraphFormat
0 =
End With
'//添加页脚
With wd.Sections(1).Footers(1)
Set Rng = .Range
"第 " =
0
Rng, 33, "Page"
Set Rng = .Range
0
" 页 共 " =
0
Rng, 26, "Pages"
Set Rng = .Range
0
" 页 " & 供应商(i) '页脚要求,第几页共几页+供应商名称 =
.Range.Fields.Update
2 =
End With
End Sub
效果如下:
几百条数据,一杯咖啡的时间就搞定了。
现在Python大炒办公自动化,其实上述效果这不就是办公自动化吗?VBA内置于Office才是最优选择。
参考文章
课程附件
👍🏽Excel VBA/Word VBA/VSTO
评论
FaceChain高保真人像风格生成挑战赛:一等奖方案
Datawhale分享 作者:马琦钧,Datawhale成员简 介大家好,我是马琦钧,Datawhale成员,毕业于浙江农林大学,统计学/会计学双学位,获得过由阿里云、谷歌、百度、CVPR、思否、极棒等举办的相关赛事奖项。本次主要分享 FaceChain 高保真人像风
Datawhale
1
OpenAI的Sora竟然造假:生成的AI大片只有1%的AI,剩下的99%是人工!
点蓝色字关注“机器学习算法工程师”设为星标,干货直达!啊?Sora火爆短片《气球人》,也“造假”了???背后艺术家团队的最新揭秘,可谓一石激起千层浪:原来,视频画面并非完全由AI生成,其中有大量视觉效果需要人类后期实现。be like:这下网友不干了,合着大家伙儿跟OpenAI玩真心,OpenAI背
机器学习算法工程师
1
让扩散模型听话的小秘籍?CAN:通过操控权重来控制条件生成模型,图像生成效率大升级!
↑ 点击蓝字 关注极市平台作者丨科技猛兽编辑丨极市平台极市导读 本文提出的 CAN 模型 (Condition-Aware Neural Network) 是一种对图像生成模型添加控制的方法。CAN 可以通过动态操纵神经网络的权重来控制图像生成过程。作者在 ImageNet 图像
极市平台
0
Open-Sora全面开源升级:支持16s视频生成和720p分辨率
机器之心发布 机器之心编辑部Open-Sora 在开源社区悄悄更新了,现在单镜头支持长达16秒的视频生成,分辨率最高可达720p,并且可以处理任何宽高比的文本到图像、文本到视频、图像到视频、视频到视频和无限长视频的生成需求。我们来试试效果。生成个横屏圣诞雪景,发b站再生成个竖屏,发抖音还能
机器学习算法与Python实战
0
OpenUI:输入一段文字就能生成网!页!!
今天给大家介绍一个开源的 AI 网页生成工具:OpenUI!!!前言 在软件开发领域,用户界面(UI)的设计和构建确实是一个至关重要的环节。传统的 UI 开发需要设计师和开发人员紧密合作,通过反复的设计、修改和测试来达到理想的效果,这个过程往往耗时且成本较高。随着 AI 技术的发展,现在有越来越多的
前端技术江湖
0
【Nucleic Acids Research】利用生成式深度学习模型设计蓝藻细菌的合成启动子
题目:Design of synthetic promoters for cyanobacteria with generative deep-learning model期刊:Nucleic Acids Research影响因子:19.16发表时间:2023.5.29原文作者:Euijin Seo
生信宝典
0
CVPR2024-扩散模型可解释性新探索,图像生成一致性创新高!AI视频生成新机遇?
CVPR2024-扩散模型可解释性新探索,图像生成一致性创新高!AI视频生成新机遇?1. 本文概要在本研究中,作者指出了对图像生成扩散模型的可重复性或一致性进行定量评分的重要性。本文提出了一种基于成对平均CLIP(对比语言-图像预训练)分数的语义一致性评分方法。通过将此度量应用于比较两种领先的开源图
GiantPandaCV
1
看论文神器,一键翻译,体验很爽
大家好, 我是章北海前段时间需要集中看几篇论文,直接看英文效率低到后脚跟,使用了多款翻译工具,效果不忍直视。一番搜索,终于发现了一款看论文神器,我愿称之为史上最强,阅读体验非常爽。网址:https://yiyibooks.cn/这个网站叫一译,你可以直接搜索想看的论文,这里已经有很多他人上传且已经翻
机器学习算法与Python实战
10