word、wps中使用vba删除所有表格指定列

处理word表格搞得人头大,找时间百度一波写了个函数处理标记删除的问题,根据这一套逻辑还可以实现很多功能,供各位参考。

要点:
双循环遍历所有表表头
InStr函数匹配具体内容(word表格多半有特殊字符,相等匹配较难保证)
在内循环结束后进行删除,否则将出错

用法:
1、定义条件,如 InStr(value1, “学号”),多条件拼接(如 InStr(value1, “学号”)>0 or InStr(value1, “姓名”) >0)
2、新建宏名range,粘贴内容到vba编辑器
3、执行

效果:

代码:

'ver 2.0Sub range()
'遍历文档所有表格,删除表头第一行含有特定字符串的列
Dim value1 As String
Dim target() As Integer
For i = 1 To ActiveDocument.Tables.CountDim targetLen As IntegertargetLen = 0For j = 1 To ActiveDocument.Tables(i).Columns.Countvalue1 = ActiveDocument.Tables(i).Columns(j).Cells(1).range.Text'这里定义条件,可以定义多个条件If InStr(value1, "测试") > 0 or InStr(value1, "学号") > 0 ThentargetLen = targetLen + 1ReDim Preserve target(targetLen)target(targetLen - 1) = jElseEnd IfNext jIf targetLen <> 0 Then' MsgBox targetLen' 修正删除操作带来的列号偏移Dim shift As Integershift = 0For k = 0 To (targetLen - 1)' MsgBox target(k)ActiveDocument.Tables(i).Columns(target(k) - shift).Deleteshift = shift + 1Next kEnd If
Next iMsgBox ("执行完毕。")
End Sub

使用过程中遇到复合表格遍历报错问题,修改加入错误处理跳过
(注意,因需求变动这里已经改成了匹配第一列,如仍需匹配第一行,请按上一段代码循环条件设置)

'ver 3.0
Dim value1 As String
Dim target() As Integer
For i = 1 To ActiveDocument.Tables.Count'MsgBox ("遍历表 " & i & "。")Dim targetLen As IntegertargetLen = 0For j = 1 To ActiveDocument.Tables(i).Rows.CountOn Error GoTo flagvalue1 = ActiveDocument.Tables(i).Rows(j).Cells(1).range.Text'这里定义条件If InStr(value1, "test1") > 0 Or InStr(value1, "test2") > 0  ThentargetLen = targetLen + 1ReDim Preserve target(targetLen)target(targetLen - 1) = jElseEnd IfNext jIf targetLen <> 0 Then' MsgBox targetLen' 修正删除操作带来的列号偏移Dim shift As Integershift = 0For k = 0 To (targetLen - 1)' MsgBox target(k)ActiveDocument.Tables(i).Rows(target(k) - shift).Deleteshift = shift + 1Next kEnd If
flag:Resume continue
continue:
Next iMsgBox ("执行完毕。")
End Sub

如需删除而非跳过复合行,则删除代码需换成下列实现形式

 With ActiveDocument.Tables(1).Cell(2, 2).Delete ShiftCells:=wdDeleteCellsEntireRowEnd With

word、wps中使用vba删除所有表格指定列相关推荐

  1. Word 2010 中的 VBA 入门

    摘要:  介绍新程序员使用 Visual Basic for Applications (VBA) 编程来扩展 Microsoft Word 2010.本主题汇总了 VBA 语言.有关如何访问 Wor ...

  2. matlab图片在word/wps中模糊解决方法,matlab图片转pdf后信息丢失解决方法

    在写论文的时候,不免需要把matlab的仿真图片贴在论文里,但是matlab图片另存为后就会降低像素,变得模糊,怎么才能让图片清晰呢? 可以按下面步骤试试: (1)matlab跑出仿真图后,在菜单栏依 ...

  3. Word/WPS中页码从指定的页面开始插入方法

    Word/WPS中页码从指定的页面开始插入方法 在写报告或者论文时,常常需要使页码从指定的页面开始插入,即在指定页面从"1" 开始显示,比如从正文开始编页码,而不是从目录或封面开始 ...

  4. 【软件问题】解决WPS中的VBA支持库安装问题(亲测可用)

    [软件问题]解决WPS中的VBA支持库安装问题(亲测可用) 一键解决WPS中的VBA支持库安装问题,下载软件后,直接默认即可,亲测可用: 链接:https://pan.baidu.com/s/18C_ ...

  5. CAD教程:将CAD图纸中图形插入到Word/WPS中

    在使用浩辰CAD软件绘制图纸的过程中,有些时候会需要将CAD图纸中的图形插入到Word/WPS中,那么除了QQ微信截图外,还有哪些便捷方法可以将CAD图纸中的图形插入到Word或者WPS的便捷方法呢? ...

  6. 如何在Word/WPS中插入noteExpress?

    两步搞定在Word/WPS中插入noteExpress 一.安装插件 二.加载 .dll文件 noteExpress 中未能在Word/WPS中显示,主要原因有两个: ①未下载安装在Word/WPS中 ...

  7. 【Tools】如何在word/wps中添加代码,并且保持源代码风格

    HighlightCode在线工具:https://highlightcode.com/ 1.将代码复制到框中 2.点击右上方的高亮代码 3.得到如下代码样式 4.将代码复制到Word/Wps中即可, ...

  8. matlab删除矩阵一列数据,matlab中实现矩阵删除一行或一列的方法

    matlab中实现矩阵删除一行或一列的方法 实例如下所示: >> A=[1,2,3;4,5,6;7,8,9] A = 1 2 3 4 5 6 7 8 9 删除行: >> A(2 ...

  9. C#实现给DevExpress中GridView表格指定列添加进度条显示效果——代码实现方式

    一.问题描述 在我们使用Winform配合DevExpress进行开发表格时,表格中的涉及到百分比数据的内容除了显示百分比的数字内容外,还希望搭配显示进度条效果(且低于百分之60的内容用红色表示不合格 ...

最新文章

  1. SQL XML 字段操作
  2. Linux下快速静态编译Qt以及Qt动态/静态版本共存
  3. Hibernate Tools for Eclipse的使用
  4. python各种数据类型的常用方法_python的基本数据类型:列表的方法
  5. hexo的yelee主题修改文章正文颜色、正文字體大小
  6. 将Redis集成到您的Spring项目中
  7. Suse 12 安装VMware tool
  8. NIO,一本难念的经——分布式系统基础
  9. undefined reference to `crypto_get_random'
  10. java分布式应用设计核心技术
  11. 职场潜规则:非985院校的简历,一律扔进垃圾桶
  12. Navicat Premium远程连接ORACLE
  13. 小程序---验证input输入不能为空
  14. java web安全框架_7.1 SpringSecurity安全框架
  15. 华为防火墙简介及其工作原理
  16. seaborn做图技巧
  17. [译] 2019 前端性能优化年度总结 — 第五部分
  18. 操作系统恐龙书第九版课后答案(持续更新)
  19. 四:es聚和函数Aggregations
  20. Python爬虫(一):爬虫伪装

热门文章

  1. 华云大咖说 | 安超DCM给数据中心“做主”
  2. iQunix F60机械键盘使用评价(精准踩雷)
  3. MSP430待机功耗问题
  4. 经典 90 坦克大战 Python 版实现(支持单双人模式)
  5. 集原美 萝莉少女 电脑4k壁纸3840x2160
  6. Java中命令行调用大坑
  7. Toronto Research Chemicals丨ACP-5197 方案
  8. linux 动态库 软链接,Linux操作系统下动态库的生成及链接方法
  9. 射频标签工作频率的分类
  10. 用 MAX7219 点亮 8*8点阵显示屏(倒不如说是 8*8 LED模块)