[Excel VBA]判断Word文档表格合并单元格数

您所在的位置:网站首页 合并后的单元格函数怎么表示 [Excel VBA]判断Word文档表格合并单元格数

[Excel VBA]判断Word文档表格合并单元格数

2023-05-23 13:26| 来源: 网络整理| 查看: 265

一、目的

        用Excel VBA读取Word文档内表格时遇到一个问题:怎么判断表格内是否有合并单元格?哪些单元格是合并单元格?

        网上搜到的相关结果不多,而且代码感觉也有些繁琐。因此就自己打断点,一点一点地分析了一下Word文档表格对象的属性,最后写了判断合并单元格的代码,并给出注释和必要的解释,供大家参考。

二、VBA代码

        1. 获取Word文档所有表格对象的集合(Tables Collection)

        这部分代码网上随便都能找到类似的,就不作解释。

        注:变量wdDoc.Tables获取当前文档内所有表格的集合。可通过wdDoc.Tables(index) 访问指定表格。

        2. 判断表格对象(Tables)是否有合并单元格

        注:参数wdTable是指定表格,即通过wdDoc.Tables(index)获取 。

        实现思路:通过 “表格行×表格列数” 计算出表格理论单元格数量,即如果没有合并单元格,这个表格就应该有这么多个单元格。然后通过.Range.Cells获取实际单元格的集合,通过判断实际单元格个数与理论的是否相等,来判断是否有合并单元格。

        这里利用到Tables对象的一个特性:wdDoc.Tables(index).Range.Cells属性获取的单元格集合,它是不包含被合并掉的单元格的。

         3. 计算合并单元格

        遍历表格单元格集合来获得每一个单元格对象,并将对象传入AnalysisMergeCells函数。

        PS:原本准备用For Each遍历wdTable.Range.Cells集合来拿到单元格对象,但是单元格对象参数传入到AnalysisMergeCells函数内就变成了单元格文本,奇怪的BUG...

          ※ 通过AnalysisMergeCells函数计算单元格的合并情况。

        注1:参数wdCellObject是表格的指定单元格对象,通过wdDoc.Tables(index).Range.Cells(index)获取

        注2:函数返回数组 [RowMergeCount, ColumnMergeCount]

        实现思路:(1)列合并很容易判断,通过获取当前单元格wdCellObject.Range.Columns集合的.Count属性,横向合并多少列集合就会有几个Column对象。(2)行合并稍微麻烦点,没有直观的属性能判断。仔细分析wdCellObject对象发现,单元格对象有.RowIndex属性,指示着当前单元格所在行。对于处在同一列的单元格.RowIndex属性是唯一的,并且在没有合并行的情况下相邻行的单元格.RowIndex是连续的,合并行后.RowIndex属性不连续,因此,可以通过计算.RowIndex属性越值来判断合并了多少行。

上传日期:2023年5月20日 17点11分



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3