2015-04-18 82 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

謝謝!有效! –