我创建了一个包含多个工作表的电子表格,每个工作表都包含来自许多不同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
答案 0 :(得分:3)
怎么样:
For Each mySheet In ThisWorkbook.Sheets
For Each myTable In mySheet.ListObjects
myTable.DataBodyRange.ClearContents
Next myTable
Next mySheet
请注意,代码不会测试对象是否为表格...实际上我不确定工作表中可能包含的其他ListObject
- 类对象。