比较MS Word表格列中的值,合并单元格并删除重复值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较MS Word表格列中的值,合并单元格并删除重复值相关的知识,希望对你有一定的参考价值。
我最初在2017年5月在Microsoft社区中提出了这个问题,我曾使用此代码修改表结构:
Sub TableDateCleaner()
Application.ScreenUpdating = False
Dim r As Long, bFit As Boolean
With ActiveDocument.Tables(2)
bFit = .AllowAutoFit
.AllowAutoFit = False
For r = .Rows.Count To 2 Step -1
If Trim(Split(.Cell(r, 1).Range.Text, vbCr)(0)) = _
Trim(Split(.Cell(r - 1, 1).Range.Text, vbCr)(0)) Then
.Cell(r, 1).Range.Delete
.Cell(r, 1).Merge .Cell(r - 1, 1)
.Cell(r, 2).Merge .Cell(r - 1, 2)
End If
Next
With .Range.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "^p"
.Replacement.Text = ", "
.Format = False
.Forward = True
.Wrap = wdFindStop
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
AllowAutoFit = bFit
.Rows.HeightRule = wdRowHeightAuto
End With
Application.ScreenUpdating = True
Call LowerCaseAfterComma 'Call next Macro so formatting done in one process
End Sub
但是,我的客户端现在使用不同的软件来生成多个表,这个宏最初用于第二个命名表,因此ActiveDocument.Tables(2)。将新表标识为第6个命名表后,我修改了代码并将其替换为ActiveDocument.Tables(6)。
虽然我将宏修改为此效果,但我现在得到'运行时错误5941集合的请求成员不存在',并且从'如果修剪....'开始的代码以黄色突出显示错误。所以,我假设它正在寻找一个不再存在的ActiveDocument.Tables中的对象,这听起来很奇怪,但我不知道那是什么。
我只是一名兼职编码员,所以我想了解一下我可能出错的地方。我正在使用Word 2016。
答案
如果您指定了正确的表索引(例如6而不是2)并且表结构相同(即每行两列),则无论您关注哪个表,代码都应该完全相同。除了你的代码缺乏结构,我能看到的唯一错误是AllowAutoFit = bFit缺少开始句点(即.AllowAutoFit = bFit)。理想情况下,在Application.ScreenUpdating = True之前,您还有Call LowerCaseAfterComma。
以上是关于比较MS Word表格列中的值,合并单元格并删除重复值的主要内容,如果未能解决你的问题,请参考以下文章