0

Excel 2007 自动将我的查询变成一个表,而 2003 只是一个数据集。我的代码是对数据进行排序,对表和不在表中的数据进行排序使用两种不同的方法,不可互换。我试图找到可以互换的东西,或者如何强制更高版本的 excel 不将我的数据查询转换为表格。

我正在考虑将特殊值复制粘贴到另一张纸上以使其从那里工作。我想知道这是否效率不高,是否有更好的方法。

4

1 回答 1

1

将数据提取到表中后,使用命令,例如

ActiveSheet.ListObjects("Table_DatabaseName").Unlist

应将其转换为您可以操作的范围,其中 Table_DatabaseName 是对象的 .DisplayName(假设您通过 VBA 提取数据。或者在功能区的“设计”选项卡中,您可以单击“转换为范围”。

您的替代方法是将数据拉入记录集并使用 .CopyFromRecordset 将数据放入。

编辑添加记录集示例

Sub PullDataTest()

Dim cnn As Object
Dim cmd As Object
Dim rs As Object

Set cnn = CreateObject("ADODB.Connection")
cnn.connectiontimeout = 0
strConn = ' You can just copy the connection string from your Connections. 
           ' Don't forget to escape the quotes: 
            'eg [Property]="" becomes [Property]=""""
cnn.Open strConn

Set cmd = CreateObject("ADODB.Command")
Set cmd.ActiveConnection = cnn
cmd.CommandType = 1
cmd.CommandText = "SELECT * FROM tbl_Db_Main"

Set rs = CreateObject("ADODB.Recordset")

With rs
    .Open Source:=cmd.Execute
    ActiveSheet.Range("A1").CopyFromRecordset rs
    .Close
End With

Set cnn = Nothing
Set cmd = Nothing
Set rs = Nothing

End Sub
于 2013-11-05T01:59:18.600 回答