使用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