Variant
查询表的数据源。 可以是下列类型之一:
-
一个包含 OLE DB 或 ODBC 连接字符串的字符串。 ODBC 连接字符串的格式为
ODBC;<connection string>
。
-
一个
QueryTable
对象,该对象表示查询信息的初始复制源,包括连接字符串和 SQL 文本,但不包括
Destination
区域。 Specifying a
QueryTable
object causes the
Sql
argument to be ignored.
-
一个 ADO 或 DAO
Recordset
对象。 从 ADO 或 DAO 记录集中读取数据。 Microsoft Excel 会保留该记录集,直到该查询表被删除或 SQL 连接发生更改。 不能对产生的查询表进行编辑。
-
Web 查询。 窗体
URL;<url>
中的字符串,其中
URL;
是必需的,但未本地化,字符串的其余部分用于 Web 查询的 URL。
-
数据查找程序。 窗体
FINDER;<data finder file path>
中的字符串,其中
FINDER;
是必需的,但未本地化。 字符串的其余部分为数据查找程序文件(*.dqy 或 *.iqy)的路径和名称。 运行
Add
方法时读取文件;对查询表的
Connection
属性的后续调用将返回以 或
URL;
开头的
ODBC;
字符串(视情况而定)。
-
一个文本文件。 窗体
TEXT;<text file path and name>
中的字符串,其中
TEXT;
是必需的,但未本地化。
Range
查询表目标区域(生成的查询表的放置区域)左上角的单元格。 目标区域必须位于包含表达式指定的
QueryTables
对象的工作表中。
Variant
在 ODBC 数据源上运行的 SQL 查询字符串。 使用 ODBC 数据源时,此参数是可选的 (如果未在此处指定此参数,则应在刷新表) 之前使用查询表的
Sql
属性对其进行设置。 将
QueryTable
对象、文本文件或 ADO/DAO
Recordset
对象指定为数据源时,不可使用此参数。
一个代表新查询表的
QueryTable
对象。
在调用
Refresh
方法之前,此方法创建的查询不会运行。
本示例基于 ADO 记录集创建查询表。 为了向后兼容,此示例保留了现有的列排序和筛选设置以及布局信息。
Dim cnnConnect As ADODB.Connection
Dim rstRecordset As ADODB.Recordset
Set cnnConnect = New ADODB.Connection
cnnConnect.Open "Provider=SQLOLEDB;" & _
"Data Source=srvdata;" & _
"User ID=testac;Password=4me2no;"
Set rstRecordset = New ADODB.Recordset
rstRecordset.Open _
Source:="Select Name, Quantity, Price From Products", _
ActiveConnection:=cnnConnect, _
CursorType:=adOpenDynamic, _
LockType:=adLockReadOnly, _
Options:=adCmdText
With ActiveSheet.QueryTables.Add( _
Connection:=rstRecordset, _
Destination:=Range("A1"))
.Name = "Contact List"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
此示例向新的查询表中导入固定宽度的文本文件。 该文本文件的第一列为 5 个字符宽,作为文本导入。 第二列为四个字符宽度,被跳过。 其余部分则导入第三列中,并对其应用常规格式。
Set shFirstQtr = Workbooks(1).Worksheets(1)
Set qtQtrResults = shFirstQtr.QueryTables.Add( _
Connection := "TEXT;C:\My Documents\19980331.txt",
Destination := shFirstQtr.Cells(1,1))
With qtQtrResults
.TextFileParsingType = xlFixedWidth
.TextFileFixedColumnWidths := Array(5,4)
.TextFileColumnDataTypes := _
Array(xlTextFormat, xlSkipColumn, xlGeneralFormat)
.Refresh
End With
此示例在活动工作表上新建查询表。
sqlstring = "select 96Sales.totals from 96Sales where profit < 5"
connstring = _
"ODBC;DSN=96SalesData;UID=Rep21;PWD=NUyHwYQI;Database=96Sales"
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("B1"), Sql:=sqlstring)
.Refresh
End With
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:https://aka.ms/ContentUserFeedback。
提交和查看相关反馈