gpt4 book ai didi

vba - 使用 VBA 在 Excel 2010 中查询表 (QueryTables) 使用 VBA 创建许多连接

转载 作者:行者123 更新时间:2023-12-02 07:01:11 28 4
gpt4 key购买 nike

我正在跟踪在另一个网站上找到的代码。这是我的代码的基础知识:

Dim SQL As String
Dim connString As String

connString = "ODBC;DSN=DB01;UID=;PWD=;Database=MyDatabase"
SQL = "Select * from SomeTable"

With Worksheets("Received").QueryTables.Add(Connection:=connString, Destination:=Worksheets("Received").Range("A5"), SQL:=SQL)
.Refresh

End With

End Sub

这样做的问题是,每次他们点击分配给它的按钮时,它都会创建一个新连接,并且似乎永远不会丢失它。我在测试后打开电子表格,在“连接”下列出了许多版本的连接。联系连接1连接2

我似乎也找不到关闭或删除连接的方法。如果我在“.Refresh”之后添加“.delete”,则会收到 1004 错误。由于后台正在刷新数据,无法执行此操作。

有什么想法如何关闭或删除连接吗?

最佳答案

您可能会问自己为什么每次都在代码中创建 QueryTable。这样做是有原因的,但通常没有必要。

查询表是更典型的设计时对象。也就是说,您创建一次 QueryTable(通过代码或 UI),然后刷新 QueryTable 以获取更新的数据。

如果您需要更改底层 SQL 语句,您有一些选择。您可以设置提示输入值或从单元格获取值的参数。更改 SQL 的另一个选项是在现有 QueryTable 的代码中更改它。

Sheet1.QueryTables(1).CommandText = "Select * FROM ...."
Sheet1.QueryTables(1).Refresh

您可以通过更改 CommandText 选择不同的列甚至不同的表。如果是不同的数据库,您将需要一个新的连接,但这种情况很少见。

我知道这并不能直接回答您的问题,但我认为确定您是否真的需要每次都添加 QueryTable 是第一步。

有关参数的更多信息,请参阅 http://dailydoseofexcel.com/archives/2004/12/13/parameters-in-excel-external-data-queries/这是 2003 年的版本,因此与后续版本很少有不一致之处。基础知识是相同的,只是如果您使用的是 2007 或更高版本,您可能需要了解 ListObject 对象。

关于vba - 使用 VBA 在 Excel 2010 中查询表 (QueryTables) 使用 VBA 创建许多连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4926441/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com