【问题标题】:Remove XML duplicate items in Excel using VBA使用 VBA 删除 Excel 中的 XML 重复项
【发布时间】:2015-05-04 11:15:06
【问题描述】:

我有 10 个 Excel 工作表,每个工作表都加载了不同的 XML 提要连接。
因此,为了定期跟踪这 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

但是当运行这个 - 出现以下错误:

子脚本超出范围

【问题讨论】:

    标签: xml vba excel


    【解决方案1】:

    我猜错误是您点击了一个不包含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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      • 2017-05-03
      相关资源
      最近更新 更多