WPS 加载项开发 > 表格 API 参考 > QueryTables > 方法 > QueryTables.Add 方法
新建一个查询表。

语法

表达式.Add(Connection, Destination, Sql)

表达式   一个代表 QueryTables 对象的变量。

参数

名称 必选/可选 数据类型 说明
Connection 必选 Variant 查询表的数据源。可为以下情形之一:
  • 一个包含 OLE DB 或 ODBC 连接字符串的字符串。ODBC 连接字符串的格式为“ODBC;<连接字符串>”。
  • 一个 QueryTable 对象,该对象表示查询信息的初始复制源,包括连接字符串和 SQL 文本,但不包括 Destination 区域。指定 QueryTable 对象会导致 Sql 参数被忽略。
  • 一个 ADO 或 DAO Recordset 对象。从 ADO 或 DAO 记录集中读取数据。ET 会保留该记录集,直到该查询表被删除或 SQL 连接发生更改。不能对产生的查询表进行编辑。
  • 一个 Web 查询,“URL;<url>”格式的字符串,其中“URL;”是必需的,但不进行本地化,字符串的其余部分作为 Web 查询的 URL。
  • 数据查找程序。“FINDER;<数据查找程序文件路径>”格式的字符串,其中“FINDER;”是必需的,但不能本地化。字符串的其余部分为数据查找程序文件(*.dqy 或 *.iqy)的路径和名称。使用 Add 方法时将读取该文件;之后,对查询表的 Connection 属性的调用将相应地返回以“ODBC”或“URL”开头的字符串。
  • 一个文本文件。“TEXT;<文本文件路径和名称>”格式的字符串,其中 TEXT 是必需的,但不能本地化。
Destination 必选 Range 查询表目标区域(生成的查询表的放置区域)左上角的单元格。目标区域必须位于 expression 指定的 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 个字符宽,作为文本导入。第二列为 4 个字符宽,被跳过。其余部分则导入第三列中,并对其应用常规格式。

示例代码
let shFirstQtr = Workbooks.Item(1).Worksheets.Item(1)
let qtQtrResults = shFirstQtr.QueryTables.Add("TEXT;C:\\My Documents\\19980331.txt",shFirstQtr.Cells.Item(1,1))
    qtQtrResults.TextFileParsingType = xlFixedWidth
    qtQtrResults.TextFileFixedColumnWidths = [5,4]
    qtQtrResults.TextFileColumnDataTypes = [xlTextFormat, xlSkipColumn, xlGeneralFormat]
    qtQtrResults.Refresh()

此示例在活动工作表上新建查询表。

示例代码
let sqlstring = "select 96Sales.totals from 96Sales where profit < 5"
let connstring = "ODBC;DSN=96SalesData;UID=Rep21;PWD=NUyHwYQI;Database=96Sales"
let qtadd = ActiveSheet.QueryTables.Add(connstring,Range("B1"),sqlstring)
    qtadd.Refresh()


请参阅