Excel VBA和XML - 清除表数据

时间:2014-05-30 11:12:30

标签: xml excel vba excel-vba excel-2010

我创建了一个包含多个工作表的电子表格,每个工作表都包含来自许多不同XML文件的XML映射表格元素。

我正在使用VBA通过指向当前目录中的给定文件名来刷新数据。但是,如果文件不存在,我希望它清除XML表中的任何现有数据。

如果删除地图,数据仍然存在且链接丢失。

类似的东西(我不知道正确的语法):

Sub ClearTables()
Dim mySheet As Worksheet
Dim myTable As ListObject

For Each mySheet In ThisWorkbook.Worksheets
    For Each myTable In mySheet.ListObjects
        'MsgBox myTable.Name
        myTable.DataBodyRange.Select
        ActiveCell.ClearContents
    Next myTable
Next mySheet
End Sub

有没有人对如何实现这一点有任何想法。当我希望它们在宏的乞讨时全部被清除时,我宁愿不必参数化并设置近50个表的名称。

我不断得到的是一个错误“对象变量或没有设置块变量”。

更新:我已经设法通过测试空表来解决这个问题。问题是由于一些表已经空了。我正在使用的代码如下:

Sub ClearTables()
Dim mySheet As Worksheet
Dim myTable As ListObject

For Each mySheet In ActiveWorkbook.Worksheets
    For Each myTable In mySheet.ListObjects
        'MsgBox myTable.Name
        'myTable.DataBodyRange.ClearContents
        If Not myTable.DataBodyRange Is Nothing Then
            myTable.DataBodyRange.ClearContents
        End If
    Next myTable
Next mySheet
End Sub

1 个答案:

答案 0 :(得分:3)

怎么样:

For Each mySheet In ThisWorkbook.Sheets
    For Each myTable In mySheet.ListObjects
        myTable.DataBodyRange.ClearContents
    Next myTable
Next mySheet

请注意,代码不会测试对象是否为表格...实际上我不确定工作表中可能包含的其他ListObject - 类对象。