使用VBA删除Excel中的XML重复项目

我有10个Excel工作表,每个我加载了不同的XML提要连接。
所以,为了经常跟踪这10个列表更新,我使用了XML追加数据!

但这里的问题是,每次我刷新XML表时,Feed都会给出重复的项目。

现在,我想要一个VBA代码一次删除所有表中的所有重复的项目。

这是我正在使用的代码:

Sub Macro_Table() Dim ws As Worksheet Dim xmltable As LisObject For Each ws In ThisWorkbook.worksheets Set xmltable = ws.ListObjects(1) xmltable.Range().RemoveDuplicate Columns:=Array(4), Headers:= Yes Next ws End Sub 

但是当运行这个 – 以下错误即将到来:

子脚本超出范围

我猜测错误是你打了一个不包含ListObjects(1)的工作表。 它必须在这条线上的原因是因为它下面的行根本不会编译:

 xmltable.Range().RemoveDuplicate Columns:=Array(4), Headers:= Yes 

应该看起来更像这样:

 xmltable.Range.RemoveDuplicates Columns:=Array(4), Header:=xlYes 

除非引用子范围,否则需要从.Range()调用中除去括号。 “Headers:=”不是参数名称,它应该是“Header:=”,并且您需要使用枚举xlYes而不是未定义的值“Yes”。 最后, RemoveDuplicate应该是RemoveDuplicates

如果你没有Option Explicit ,Yes将会是一个新的Variant,被赋值为0,并被传递给函数,基本上是xlGuess

您还应该更正您的variables声明, Dim xmltable As ListObject而不是LisObject

把它放在一起检查,看是否存在ListObject,你得到这样的东西:

 Sub Macro_Table() Dim ws As Worksheet Dim xmltable As ListObject For Each ws In ThisWorkbook.Worksheets If ws.ListObjects.Count <> 0 Then Set xmltable = ws.ListObjects(1) xmltable.Range.RemoveDuplicates Columns:=Array(4), Header:=xlYes End If Next ws End Sub