QueryTables.Add 方法 (Excel)
创建新的查询表。
语法
表达式。添加 (连接、 目标、 Sql)
表达 一个代表 QueryTables 对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
Connection | 必需 | Variant | 查询表的数据源。 可以是下列类型之一:
|
目标 | 必需 | Range | 查询表目标区域(生成的查询表的放置区域)左上角的单元格。 目标区域必须位于包含表达式指定的 QueryTables 对象的工作表中。 |
Sql | 可选 | 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。