QueryTables.Add メソッド (Excel)

新しいクエリ テーブルを作成します。

構文

追加 (接続宛先Sql)

QueryTables オブジェクトを表す変数。

パラメーター

名前 必須 / オプション データ型 説明
Connection 必須 バリアント型 (Variant) クエリ テーブルのデータ ソース。 次のいずれかを使用できます。
  • OLE DB または ODBC の接続文字列を含む文字列。ODBC 接続文字列の形式は、"ODBC;<接続文字列>" です。 ODBC 接続文字列の形式 ODBC;<connection string>は です。
  • A QueryTable object from which the query information is initially copied, including the connection string and the SQL text, but not including the Destination range. Specifying a QueryTable object causes the Sql argument to be ignored.
  • ADO または DAO の Recordset オブジェクト。 データは ADO または DAO レコードセットから読み取られます。 クエリ テーブルを削除するか、または接続を変更するまで、レコードセットは保持されます。 結果のクエリ テーブルは編集できません。
  • Web クエリ。 フォーム URL;<url> 内の文字列 。 URL; 必須ですがローカライズされておらず、残りの文字列が Web クエリの URL に使用されます。
  • Data Finder. 必須ですがローカライズされていないフォームFINDER;<data finder file path>FINDER;内の文字列。 The rest of the string is the path and file name of a Data Finder file (*.dqy or *.iqy). ファイルは、Add メソッドの実行時に読み取られます。クエリ テーブルの Connection プロパティに対する後続の呼び出しでは、 または URL; から始まるODBC;文字列が返されます。
  • テキスト ファイル。 必須ですがローカライズされていないフォームTEXT;<text file path and name>TEXT;内の文字列。
宛先 必須 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

次の使用例は、新しいクエリ テーブルに固定幅のテキスト ファイルをインポートします。 テキスト ファイルの列 1 は 5 文字幅で、テキスト形式でインポートされます。 列 2 は 4 文字幅で、スキップされます。 テキスト ファイルの残りの部分は列 3 にインポートされ、一般の書式が適用されます。

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 のサポートおよびフィードバックを参照してください。