QueryTables.Add メソッド (Excel)

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

構文

Add (Connection, Destination, 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 プロパティへの後続の呼び出しは、必要に応じて始まる文字列 ODBC;URL; 返します。
  • テキスト ファイル。 必須ですがローカライズされていないTEXT;<text file path and name>``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

次の使用例は、新しいクエリ テーブルに固定幅のテキスト ファイルをインポートします。 テキスト ファイルの列 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 のサポートおよびフィードバックを参照してください。