Excel 2007 自动将我的查询变成一个表,而 2003 只是一个数据集。我的代码是对数据进行排序,对表和不在表中的数据进行排序使用两种不同的方法,不可互换。我试图找到可以互换的东西,或者如何强制更高版本的 excel 不将我的数据查询转换为表格。
我正在考虑将特殊值复制粘贴到另一张纸上以使其从那里工作。我想知道这是否效率不高,是否有更好的方法。
Excel 2007 自动将我的查询变成一个表,而 2003 只是一个数据集。我的代码是对数据进行排序,对表和不在表中的数据进行排序使用两种不同的方法,不可互换。我试图找到可以互换的东西,或者如何强制更高版本的 excel 不将我的数据查询转换为表格。
我正在考虑将特殊值复制粘贴到另一张纸上以使其从那里工作。我想知道这是否效率不高,是否有更好的方法。
将数据提取到表中后,使用命令,例如
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