使用VBA删除Excel中的XML重复项
我有10张Excel表格,每一张都加载了不同的XML提要连接。使用VBA删除Excel中的XML重复项,xml,vba,excel,Xml,Vba,Excel,我有10张Excel表格,每一张都加载了不同的XML提要连接。 因此,为了定期跟踪这10个列表更新,我使用了XML追加数据 但这里的问题是,每次刷新XML表时,提要都会提供重复的项 现在,我想要一个VBA代码,一次删除所有工作表中的所有重复项 以下是我正在使用的代码: Sub Macro_Table() Dim ws As Worksheet Dim xmltable As LisObject For Each ws In ThisWorkbook.worksheets
因此,为了定期跟踪这10个列表更新,我使用了XML追加数据 但这里的问题是,每次刷新XML表时,提要都会提供重复的项 现在,我想要一个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
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
除非引用子范围,否则需要从.Range()调用中删除括号。“Headers:=”不是参数名,它应该是“Header:=”,您需要使用枚举xlYes而不是未定义的值“Yes”。最后,RemoveDuplicate
应该是RemoveDuplicates
如果您没有启用选项Explicit
,Yes将是一个新的变量,被分配一个默认值0,并作为基本xlGuess
传递给函数
您还应该将变量声明,Dim xmltable改为ListObject
,而不是LisObject
将它放回一起,检查ListObject是否存在,得到如下结果:
xmltable.Range.RemoveDuplicates Columns:=Array(4), Header:=xlYes
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
子宏_表()
将ws设置为工作表
Dim xmltable作为ListObject
对于此工作簿中的每个ws。工作表
如果ws.ListObjects.Count为0,则
Set xmltable=ws.ListObjects(1)
xmltable.Range.RemoveDuplicates列:=数组(4),标题:=xlYes
如果结束
下一个ws
端接头