首页 > 解决方案 > 使用从文本文件导入的范围创建表

问题描述

我正在将一个文本文件导入 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

我找到的唯一解决方案是将整个内容作为值复制到另一张表中并在那里制作表格。我尝试了多个文本文件,它们都导致了问题。

标签: excelvba

解决方案


看起来你需要使用 a QueryTable,类似的东西

ActiveSheet.QueryTables(1).Delete

也许文档中的有用片段QueryTable.ListObject

如果使用用户界面导入数据,来自 Web 查询或文本查询的数据将作为对象QueryTable导入,而所有其他外部数据将作为ListObject对象导入。

如果使用对象模型导入数据,则来自 Web 查询或文本查询的QueryTable数据必须ListObjectQueryTable.

因此,对于文本查询,您似乎坚持删除QueryTable,然后ListObject像您当前所做的那样创建 。


推荐阅读