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

提交和查看相关反馈