利用vba替换word中多个表格,相邻单元格的文字

目录

一、效果图

标题估计没说明白,上图

1、替换前

2、替换后

如下图目标达成

二、敲代码

1、开发者工具→vba编辑器,点击插入模块

2、键入以下代码

复制代码
Sub ReplaceTenConsecutiveCells()
    Dim tbl As Table, targetCells As Range
    Dim oldGroups() As Variant, newGroups() As Variant
    Dim i As Long, j As Long, k As Long, m As Long
    
    ' ====== 配置区 ======
    ' 定义旧值组合 vs 新值组合(必须一一对应)
    oldGroups = Array(Array("A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10"), Array("B1", "B2", "B3", "", "", "", "", "", "", ""))
    newGroups = Array( _
        Array("New1", "New2", "New3", "New4", "New5", "New6", "New7", "New8", "New9", "New10"), _
        Array("替换1", "替换2", "替换3", "", "", "", "", "", "", "") _
    )
    'Const HIGHLIGHT_COLOR As Long = RGB(0, 176, 80) ' 标记颜色(绿色)
    ' ====== 配置结束 ======
    
    Application.ScreenUpdating = False
    For Each tbl In ActiveDocument.Tables
        For i = 1 To tbl.Rows.Count
            ' 动态计算可用列范围
            For j = 1 To tbl.Columns.Count - 9 ' 确保有连续10列
                ' 提取连续10单元格内容(清理结尾符)
                Dim currentGroup(9) As String
                For k = 0 To 9
                    On Error Resume Next ' 跳过合并单元格错误
                    currentGroup(k) = Replace(tbl.cell(i, j + k).Range.Text, Chr(13) & Chr(7), "")
                    On Error GoTo 0
                Next k
                
                ' 遍历所有预设规则进行匹配
                For k = 0 To UBound(oldGroups)
                    Dim isMatch As Boolean
                    isMatch = True
                    For m = 0 To 9
                        ' 空字符串表示跳过该位置匹配
                        If oldGroups(k)(m) <> "" And currentGroup(m) <> oldGroups(k)(m) Then
                            isMatch = False
                            Exit For
                        End If
                    Next m
                    
                    ' 执行替换并标记
                    If isMatch Then
                        For m = 0 To 9
                            On Error Resume Next ' 跳过合并单元格写入
                            tbl.cell(i, j + m).Range.Text = newGroups(k)(m)
                            tbl.cell(i, j + m).Shading.BackgroundPatternColor = RGB(0, 176, 80)
                            On Error GoTo 0
                        Next m
                        Exit For ' 匹配成功即跳出循环
                    End If
                Next k
            Next j
        Next i
    Next tbl
    Application.ScreenUpdating = True
    MsgBox "已处理 " & UBound(oldGroups) + 1 & " 组规则,替换完成!"
End Sub

一些说明

3、代码编辑完成后,开发者工具→运行宏,选择对应名称,运行

相关推荐
weixin_493503672 小时前
商会系统里的在线文件预览:PDF/Word/Excel 三种实现与选型(Node + 前端实战)
pdf·word·excel
北城笑笑4 小时前
Vue 104 ,AI + ECharts + Word:大模型数据可视化报告生成实战(前端导出图文并茂 Word 文档)
前端·vue.js·word·echarts
AIGC大时代1 天前
Obsidian × Claude Cowork × Word:把研究笔记变成可验收写作链
笔记·word·claude·学术写作·obsidian·研工作流
Am-Chestnuts1 天前
通义千问任务清单怎么导出Word?用DS随心转保留层级和勾选项
开发语言·c#·word
Am-Chestnuts1 天前
豆包、DeepSeek公式怎么导出Word?用DS随心转保留可编辑格式
word
古少侠1 天前
DeepSeek长回答怎么保存成Word?避免逐段复制和漏内容
c#·word
laoban-yu2 天前
Word与PDF文档互转
pdf·word·文档转换
古少侠2 天前
用 DS随心转 把 AI 给的表格整理成排版正常、能改的 Word
word
2601_962295332 天前
Python自动化批量文档生成工具:Word与Excel的结合应用
python·自动化·word·excel·文档生成
古少侠4 天前
用 DS随心转 把 AI 画的 Mermaid 流程图转成 Word 里的高清图
开发语言·c#·word