2015-04-18 58 views
1

我有10个Excel工作表,每个用不同的XML提要连接加载。
因此,为了定期跟踪这10个列表更新,我使用了XML追加数据!使用VBA删除Excel中的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 

但是运行这个时 - 下面的错误来了:

子脚本超出范围

回答

2

我猜测错误是你打了一个不包含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,那么将会是一个新的Variant,将被分配一个默认值0,并且基本上被传递给该函数xlGuess

您还应该更正变量声明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 
+0

谢谢!有效! –