excel - 使用从文本文件导入的范围创建表
问题描述
我正在将一个文本文件导入 Excel,然后尝试将该范围转换为表格。
当您尝试手动创建表时,您会收到提示:
您的选择与一个或多个外部数据范围重叠。是否要将选择转换为表格并删除所有外部连接?
如果您选择是,它会起作用。
如果您尝试从名称管理器中删除命名范围,那么当您获得范围选择框并单击“确定”时,没有任何反应,没有错误,该框不会消失,没有任何反应。删除连接也不能解决这个问题,但命名范围似乎是实际导致它的原因。
当您尝试通过代码创建表时,您将获得:
错误 1004:表不能与包含数据透视表、查询结果、受保护单元格或其他表的范围重叠。
Sub TestNameConnDelete()
Dim item As Variant
For Each item In ActiveWorkbook.names
item.Delete
Next item
For Each item In ActiveWorkbook.Connections
item.Delete
Next item
End Sub
Sub TestTableCreate()
Dim lastrow As Long
Dim lastcol As Long
With ActiveSheet
lastrow = .Cells(.rows.count, 1).End(xlUp).row
lastcol = .Cells(1, .Columns.count).End(xlToLeft).Column
.Range(.Cells(1, 1), .Cells(lastrow, lastcol)).Locked = False
.ListObjects.Add xlSrcRange, .Range(.Cells(1, 1), .Cells(lastrow, lastcol)), , xlYes
End With
End Sub
我找到的唯一解决方案是将整个内容作为值复制到另一张表中并在那里制作表格。我尝试了多个文本文件,它们都导致了问题。
解决方案
看起来你需要使用 a QueryTable
,类似的东西
ActiveSheet.QueryTables(1).Delete
也许文档中的有用片段QueryTable.ListObject
:
如果使用用户界面导入数据,来自 Web 查询或文本查询的数据将作为对象
QueryTable
导入,而所有其他外部数据将作为ListObject
对象导入。如果使用对象模型导入数据,则来自 Web 查询或文本查询的
QueryTable
数据必须ListObject
以QueryTable
.
因此,对于文本查询,您似乎坚持删除QueryTable
,然后ListObject
像您当前所做的那样创建 。