word VBA 的使用案例

  • VBA是什么?
  • 为什么要使用VBA?
  • VBA的运用实例---批量清除表格某单元格内容
  • 结语

VBA是什么?

VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。它也可说是一种应用程式视觉化的 Basic 脚本。
1993年由微软公司开发的应用程序共享一种通用的自动化语言--------即Visual Basic for Application(VBA),实际上VBA是寄生于VB应用程序的版本。1994年发行的Excel 5.0版本中,即具备了VBA的宏功能。(以上为百度百科上的解释,百度百科地址)

为什么要使用VBA?

上篇文章(文章地址)Word宏的运用,其中也说明了Word宏缺点比较明显,“通过录制得到的往往没有手动编写代码得到的更加精致和灵活”,在实际运用中,我们想对文本进行批处理时,往往存在其它的变化因素,单纯的通过手动录制宏,没有办法实现最终目的,此时就需要灵活的编写VBA代码来达到预期的结果。

VBA的运用实例—批量清除表格某单元格内容

工作中经常遇到对word的批量操作,如果重复的操作达到上百甚至更多后,也是不小的工作量,若手动处理很容易出现因为疲劳导致的处理错误、遗漏等问题。而此时只会简单的录制宏,就会发现有时使用录制的宏去处理,并不能很好的解决我们的问题,下面跟着我一起分析一个案例,我会详细说明如何根据需求先对文档进行分析,再设计解决方案,最后进行代码的实现。(有编程基础的,建议直接看代码)
如图所示:
目的:将设计单中的"测试结果"和"问题标识"列内容清空。

文档其它部分展示

文档分析:

  1. 若要清除设计单9的"测试结果"和"问题标识"列,我们只需要将8~11行的4、5列内容替换为空即可,代码实现为ActiveDocument.Tables(1).Cell(8, 4).Range.Text = "",表示将第1个表格的8行4列内容写成空,后面再更改行数和列数,就能实现将8~11行的4、5列内容替换为空。
  2. 我们继续往下看设计单10,发现了一个严重的问题,设计单9的步骤有4步,而设计单10的步骤有2步,每个测试用例设计单内的步骤是不固定的! 若要清除设计单9的"测试结果"和"问题标识"列,需要将8~9行的4、5列内容替换为空,如果此时使用清除设计单9的代码去执行设计单10,就会将设计单10内容打乱。同理,若设计单11的步骤数为5,那就会出现遗漏一列没有清除掉。可以形象的理解为一把钥匙只能打开一扇门,此时使用固定的行数已经无法达到目的,我们就需要琢磨下怎么制作一把万能钥匙呢?

建议先思考分析下问题再往下看,相对于得到鱼,我更希望大家得到渔!

设计解决方案:
下面为我个人的分析思路和设计解决方案:通过对设计单9、10的分析,每次清除的单元格的行数是不固定的,列数是固定的4、5,所以我只需要确定每次清除的行数是正确的,就能够达到最终目的。我先对比了设计单9、10,发现表格的前7行和后4行为固定模板,因此可以确定我要清理的行数一定是从第8行开始,结束的行数一定是倒数第5行(暂定为LastR行),此时就得到了要清理的行数:8行~LastR行,这就得到每次要清理的单元格坐标(行数和列数)。现在只需要将8~LastR行的4、5列内容替换为空即可。

代码的实现

Sub 批量清除表格某单元格内容()
For t = 1 To ActiveDocument.Tables.CountLastR = ActiveDocument.Tables(t).Rows.Count - 4For r = 8 To LastRActiveDocument.Tables(t).Cell(r, 4).Range.Text = ""ActiveDocument.Tables(t).Cell(r, 5).Range.Text = ""Next r
Next t
End Sub

注释

在Sub 批量清除表格某单元格内容()
For t = 1 To ActiveDocument.Tables.Count
'这里循环是为了清除所有表格,ActiveDocument.Tables.Count为统计文档的表格数LastR = ActiveDocument.Tables(t).Rows.Count - 4'这里LastR计算结果为倒数第5行,Tables(t).Rows.Count为统计表格的行数For r = 8 To LastR'这里循环是为了清除8行~LastR行的4、5列单元格ActiveDocument.Tables(t).Cell(r, 4).Range.Text = ""'单纯的文本替换,将表格t的r行,4列的文本替换为空ActiveDocument.Tables(t).Cell(r, 5).Range.Text = ""Next r
Next t
End Sub

若不知道代码写哪?怎么运行?可以先阅读我的上篇文章(文章地址)Word宏的运用,先从宏的录制开始学习。

结语

以上举例只是VBA运用的一个案例-批量清除表格某单元格内容,至于其他的具体运用,有兴趣的可以自行了解。师傅领进门,修行靠个人!主要是对文档的分析,并不是所有情况都适合用VBA进行批处理,不要为了用VBA而去用VBA,不然只会适得其反!至于代码的实现并不复杂,可以去网上查阅API手册(Word Visual Basic for Applications (VBA) 参考 | Microsoft Docs)。解决问题的思路才是重要的!
本文仅个人总结,存在不合理处,希望大家及时指出更正。下篇将举例说明Word怎么进行编号替换。编写不易,转载引用请说明出处。希望大家多多支持,在此表示感谢!

word(2010)使用VBA完成批处理操作-批量清除表格某单元格内容相关推荐

  1. find vba 模糊_EXCEL——VBA实现模糊查找并获取查找到的单元格内容

    image 大家有没有遇到过这种情况,要在一张数据很多的sheet中进行查找匹配一个数据或多个数据(部分匹配),并对查找到的单元格内容进行汇总.这个时候如果对多个数据一个个在目标sheet中ctrl ...

  2. openxlpy 在excel中批量插入图片 根据单元格内容插入图片 图片随单元格大小变化而变化 AnchorMarker python

    需求: 根据单元格的文本内容,插入相同名称的图片: 图片大小与单元格大小相同 要用到OS库和openxlpy库 步骤: 遍历excel区域里面的单元格,看是否有文本内容 根据文本内容确定图片的名称,从 ...

  3. Excel 2010 VBA 入门 033 批量合并相同的单元格

    目录 Range的Merge方法合并单元格 VBA运行时关闭警告 多行中相同的内容处理 示例: Range的Merge方法合并单元格 单元格对象的Merge方法可以用来合并相邻的单元格区域,使之成为一 ...

  4. Excel答粉丝问:批量将单元格内容转为批注

    点赞再看,养成习惯:烈士暮年,壮心不已. 微信搜索[亦心Excel]关注这个不一样的自媒体人. 本文 GitHub https://github.com/hugogoos/Excel 已收录,包含Ex ...

  5. element 表格单元格内容不换行_实例29_在Word表格中将上下行相同内容的单元格自动合并...

    实例28讲了如何在Excel文件中自动合并上下行相同内容的单元格,此例则讲一讲如何在Word文件中做类似的操作.因为处理Excel和Word的模块是不同的,所以合并单元格也有一些差异.相对来说,Wor ...

  6. word课程表设置符号与编号_用WORD设计一个课程表 ,标题使用艺术字生成 ,要包含合并单元格、边框、底纹、字体样式、背景图片,包含自己的学号和姓名。提交到锦城在线上。_学小易找答案...

    [其它]课程论文要求: ( 1 )本课程的要点及重难点分析.( 200 字以上) ( 2 )对课程内容的小结和认识.( 300 字以上) ( 3 )对课程内容增.删或修改建议.(至少一条, 100 字 ...

  7. EXCEL批量给多个单元格里指定字上色其他颜色

    通过VBA开发,实现EXCEL批量给多个单元格里指定字上色其他颜色 下载地址:https://download.csdn.net/download/shaochuan_2008/75559734htt ...

  8. Word插入表格相邻单元格边框断开方法

    Word插入表格相邻单元格边框断开方法 写论文要将相邻单元格边框打断,见了很多教程,这里详细讲解一些如何实现,重点要掌握应用于单元格和段落的边框是不同的,应用于段落的边框之间是分开的. 实现效果: 操 ...

  9. 解决word表格中单元格自动计算的问题

    word表格中单元格自动计算的问题 word中有一个表格,某一列需要累加求和,网上有关于左边所有列求和的方法,和单列求和方法,但是没有左边累加求和的方法 红色标记列是要累加求和,也就是需要计算左边那一 ...

最新文章

  1. 教你利用python 的单人AI 扫雷游戏
  2. Node.js + Nginx-现在怎么办?
  3. button/input链接方式全攻略 [转]
  4. python解释器运行代码-Python如何运行程序
  5. 如何在Windows7下删除Ubuntu开机引导项
  6. weifenluo与notifyIcon小细节
  7. 初步认识Volatile-JMM
  8. java用接口实例化对象_[求助]迷茫中,接口可以直接实例化对象吗?
  9. BZOJ2150: 部落战争
  10. win2003服务器中:无法连接ACCESS数据库/sql数据库正常 .net程序生成的dll文件拒绝访问问题...
  11. 滴滴上线自动驾驶服务;微软宣布将永久关闭实体店;.NET 5.0 Preview 6 发布 | 极客头条...
  12. Python对图像进行二维Gabor滤波加速
  13. JVM GC调优一则--增大Eden Space提高性能
  14. 8. 大型网站架构演化
  15. mysql基础面试题大全
  16. 被积函数中有x不能直接求导_解析变限积分函数的求导问题
  17. 让程序员崩溃的瞬间(非程序员勿入)
  18. Emakefile--快速编译
  19. 网站架构资料收集整理
  20. C语言计算三角形面积参考代码

热门文章

  1. T检验、F检验和统计学意义(P值或sig值)(转载)
  2. Python 中 concurrent.futures 模块使用说明
  3. 自学CTP客户端开发记录001
  4. IBM p系列小型机日常维护及故障排除时常用命令(检查IBM设备状态汇总)
  5. Bilstm+crf中的crf详解
  6. 【报错】Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
  7. c盘java文件误删_清理C盘误删的文件怎么恢复
  8. 使用网络爬虫为英语单词添加音标
  9. Qt QWidget播放视频背景图片闪烁
  10. 女朋友发的微信消息撤回了,python一串代码,让你大呼过瘾