利用字典及查找替换,将Excel信息与Word模板组合
2024-06-17 0
大家好,今天我们讲解《VBA信息获取与处理》教程《利用字典和查找替换将Excel信息与Word模板结合》第十五专题《将Excel数据信息传输到WORD应用程序》第四节。本专题是一个非常实用的知识点,希望大家能够掌握并运用。本教程将提供配套的程序文件。
第4节使用字典和搜索替换将Excel信息与Word模板结合起来
大家好,本节我们将继续学习处理EXCEL信息。目的和上一讲一样,就是提取信息并在WORD模板中输出。在上一讲中,我们使用了MailMerge方法。很多资料将此方法翻译为邮件合并,字面意思是正确的,但并不能完全表达此方法的功能。这里我就不做翻译了,直接用英文表达一下。虽然这种方法达到了我们的目的,但是它还有很多缺点。首先,代码复杂且难以理解,特别是对于那些不太熟悉这种方法的人来说。其次,参数较多,误差在所难免。有没有更好的办法?在这篇文章中,我们将解释一个熟悉的方法来解决它,使用字典以及我们经常使用的搜索和替换。使用这种方法首先会大大降低代码的难度,同时提高代码的运行速度。
1使用字典和搜索替换方法输出信息的思想分析
利用基础的VBA知识点来解决问题是我们的目标。遇到的实际问题有上千种,解决方法也有上千种。最容易使用的通常是基本方法。例如,可以使用字典来存储我们在EXCEL中提取的信息。同时可以直接获取信息条数。如果有必要的话,还可以用来消除重复,这是一个非常好的方法。我们不妨使用字典来提取我们的信息。
查找和替换是指在word中进行的操作。我们可以按顺序找到我们需要替换的值,然后用字典中已经存储的信息替换它。
为了更好地实现信息的组合和拆分,当我们将数据加载到字典中时,我们不妨用固定符号将每个数据分开,然后在使用这些数据时直接使用Split函数进行分解。对于本讲的问题,我们不妨以条目数作为字典的键,以信息组合作为键值对应关系。在word模板中替换具体值时,可以直接提取Split后的数组元素,非常简单实用。
2使用字典和查找替换方法实现输出信息的代码实现
现在我们有了想法,让我们看一下代码部分:
SubmynzD()'使用字典和搜索替换将excel数据与WORD模板文件合并
DimobjWordAsObject,objWordNewAsObject
DimavntFieldAsVariant
'给定模板文件地址
strCopyMyPathThisWorkbookPath'015Mtemplatedocx'
strNewPathstrCopyMyPath
'引用字典
SetdicCreateObject('脚本字典')
'给出路径
strMyPathThisWorkbookPath
'创建参考
SetobjWordCreateObject('WordApplication')
'给字典赋值
Sheets('sheet3')Select
i2
DoWhileCells(i,1)''
'写入键??和键值,注意书写方法
dic(i-1)细胞(i,'a')''细胞(i,'b')''细胞(i,'c')''细胞(i,'d')''细胞(i,'e')
ii1
环形
SUMIi-2
avntFieldArray('货品编号','收货人','地址','数量','检验')
'在数据之间创建循环
与objWord
VisibleTrue
Forj1ToSUMI
SetobjWordNewDocumentsOpen(strNewPath)
SetmyRangeActiveDocumentContent
'字典键值分解
UUSplit(dic(j),'')
Fori0ToUBound(avntField)
myRangeFindExecuteFindText:avntField(i)'值',ReplaceWith:UU(i),替换:wdReplaceAll
下一个
'文件保存
。ActiveDocumentSaveAsstrMyPath''UU(0)'doc'
ActiveDocumentCloseTrue
设置objWordNewNothing
下一个
结束方式
objWord退出
设置objWordNothing
塞迪克无
MsgBox'文件处理完成'
结束子
代码祝福截图:
代码解释:
1)'引用字典
SetdicCreateObject('脚本字典')
建立对代码的引用以供以后绑定。
2)'给字典赋值
Sheets('sheet3')Select
i2
DoWhileCells(i,1)''
'写入键??和键值,注意书写方法
dic(i-1)细胞(i,'a')''细胞(i,'b')''细胞(i,'c')''细胞(i,'d')''细胞(i,'e')
ii1
环形
上面的代码将工作表中的信息放入字典中。对于字典来说,键是信息的条目数,键值是信息,信息的不同字段之间用“”分隔
3)Forj1ToSUMI
SetobjWordNewDocumentsOpen(strNewPath)
SetmyRangeActiveDocumentContent
'字典键值分解
UUSplit(dic(j),'')
Fori0ToUBound(avntField)
myRangeFindExecuteFindText:avntField(i)'值',ReplaceWith:UU(i),替换:wdReplaceAll
下一个
'文件保存
ActiveDocumentSaveAsstrMyPath''UU(0)'doc'
ActiveDocumentCloseTrue
设置objWordNewNothing
下一个
上面代码使用UUSplit(dic(j),'')对字典的键值进行分解,得到一维数组。使用FindExecute方法实现在WORD文档中的查找和替换。搜索内容为FindText:avntField(i)'value';替换内容为ReplaceWith:UU(i),完美解决了word中问题输入数据信息的问题。
3利用字典和查找替换的方法达到输出信息的效果
当我们点击下面截图中的运行按钮时,我们会得到数据信息的模板化输出,比如下面截图中的信息和输出文件。
达到的效果也是非常完美的。
本节知识点参考:
在本例中使用字典键来表示信息条目有什么好处?②如何将每条消息的内容与WORD文档结合起来?
本讲座代码参考文件:015worksheetxlsm
积木式编程的思想和内涵:
在我的系列书中,我一直强调“搭积木”的编程思想。这也是学习使用VBA的主要方法,尤其是职场人士,必须采用这种方案。其主要内涵:
1不要自己输入所有代码。你要做的就是把积木放到合适的位置,然后修改代码。请务必复制它。从您的构建块库中复制它,然后修改代码,并利用您的时间进行高效思考。
2建立自己的“积木库”。在平时的学习过程中,我把自己认为有用的代码放在一起,积累起来。当我需要它们的时候,我可以随时把它们带回来。您的构建块库中的信息越多,您的编程想法就越广泛。
VBA应用定义及学习教程:
VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对VBA的应用程序定义。在取代OFFICE的新型办公软件到来之前,谁能将数据处理做到极致,谁就是王者。其中,终极技能非VBA莫属!
记得20年前刚学VBA的时候,当时的资料还很少。只能自己看源码自己搞清楚,确实很难。二十年过去了。为了防止正在学习VBA的朋友重蹈我之前的经历,我根据自己多年使用VBA的实践经验,推出了六本VBA专题教程。目前教程已通过32位和64位OFFICE系统的测试。
第一套:VBA代码解答,是对VBA中各个知识点的讲解。教程一共147个,涵盖了绝大多数VBA知识点,提供的程序文件更是多这是不可多得的代码宝库,也是初学者、中级人的必备教程。本教程当前版本为修订版第二版,程序文件已通过32位和64位OFFICE系统的测试。
第二套:VBA数据库解决方案数据库是一种专业的数据处理工具。教程详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级人员学习。本套教程目前提供修改后的第一版教程,程序文件已经在32位和64位OFFICE系统上通过了测试。
第三套:VBA数组和字典解法数组和字典是VBA的精髓。字典是提高VBA代码水平的有效手段。它们值得深入研究,是初级和中级人员改进代码的手段。本套教程当前版本为修订版第一版,程序文件在32位和64位OFFICE系统上均通过了测试。
第四套:VBA代码解答视频是专门针对初学者的视频讲解,可以帮助你快速上手,更快掌握这项技能。本套教程是第一套教程(修订版)的视频讲解,听元音时更容易接受。这套教程还将额外提供在32位和64位OFFICE系统上都通过测试的程序文件。
第五套:VBA中类的解释与利用这是一个高级教程,解释了类的空性和物理程度。虽然类的使用较少,但是认真学习可以促进自己VBA理论的提高。这套教程的理解主要是让读者了解和理解一种佛教哲学。本套教程当前版本为修订版第一版,程序文件在32位和64位OFFICE系统上均通过了测试。
第六套教程:《VBA信息获取与处理》,这是一套范围较广、实用性较大的高级教程,针对的是中高级人员。教程共二十个主题,包括:跨应用信息获取、随机信息利用、电子邮件发送、VBA互联网数据抓取、VBA延迟操作、剪贴板应用、拆分功能扩展、工作表信息等应用交互、FSO的利用对象、工作表及文件夹信息获取、图形信息获取、工作表信息功能定制等。程序文件均通过了32位和64位OFFICE系统测试。
上述教程的学习顺序为:1→3→2→6→5或4→3→2→6→5。提供的程序文件是一个庞大的代码库供读者使用。如有需要可以微信:NZ9668
学习VBA是一个过程,也需要体会一下枯燥的感觉
“百鸟齐飞,孤云孤单,百看不厌,唯有敬亭山”。学习的过程也是修心的过程,修心静气。在代码的世界里,你的头脑会平静,你的心情会更好,你的身体自然也会感觉更好。平静的心就是正念。心中没有那么多的邪见邪见,也没有那么多的妄想。利益别人就是利益自己。我的教程是为有困难的朋友准备的。
“水善万物,不与万物相争”。它是连续而密集的。其小则寂静,其大则动荡。学习也是如此,知道自己需要什么,不要挤在一小片自以为天堂的世界里,等到晚年才发表自欺欺人的言论。我们必须努力提高自己,以充满活力的灵魂抓住现在,这就是进步。越是有意义的事情,就越困难。愿力决定成败,智慧决定成败。无论遇到什么,永远都是风景。轻视纷争,轻视得失。学之时,微妙而无声;用之时,则浩大而汹涌。“路漫漫其修远兮,吾将上下而求索”。
每一次收获,都是成长的记录。怎么可能是真的呢?正是这份坚持,才让朝霞灿烂。最后献上一段话送给致力于VBA学习的朋友,让大家感受一下枯燥而执着的学习过程:
浮云掠过,密语无声,
唯有清风惊梦中黄莺。
看星星,远离北斗七星,
让我们像大雁一样,把过去留在一起。
陌生的人,昏暗的灯光,
不忍看长汀。
有多少VBA人,
漆黑的夜里,我静静地寻找梦想,却又期盼黎明。
多么未经证实!
很想把自己多年实际工作经验的成果分享给真正需要使用VBA的旅友们,分享这些有用的东西。回顾过去学习和使用VBA的经历,我深受感动。我想用这句话来纪念它。
分享成果,享受正能量
本站文章均由用户上传或转载而来,该文章内容本站无法检测是否存在侵权,如果本文存在侵权,请联系邮箱:2287318951@qq.com告知,本站在7天内对其进行处理。