SQL.REQUEST 関数

重要:  この記事は機械翻訳されています。機械翻訳についての「免責事項」をお読みください。この記事の英語版を参照するには、ここをクリックしてください。

ここでは、Excel の SQL.REQUEST 関数の書式および使用法について説明します。

重要: 

  • Excel 2010 より、Get & Transform (Power Query) が提供され、SQL.REQUEST 関数と効果的に置き換えられました。これにより、外部のデータ ソースからのデータのインポートの機能が拡張されています。

  • SQL.REQUEST 関数は Microsoft Excel 2007 以降はサポートされていません。

  • このトピックには、一部の言語には当てはまらない内容が含まれています。

説明

SQL.REQUEST 関数は外部のデータ ソースと接続し、ワークシートからクエリを実行します。マクロをプログラミングする必要なく、配列として結果を返します。この関数が使用できない場合、Microsoft Excel ODBC アドイン プログラム (XLODBC.XLA) をインストールする必要があります。

構文

SQL.REQUEST(接続コード,[出力セル],[ダイアログ表示],[ステートメント],[列名表示])

SQL.REQUEST 関数の書式には、次の引数があります。

  • 接続コード    必ず指定します。データ ソースへの接続に使用されるドライバーに必要な情報 (データ ソース名、ユーザー ID 、パスワードなど) を指定します。接続コードはドライバーの書式に従う必要があります。次の表に、3 つのドライバーに対する接続コードの例を示します。

ドライバー

接続コード

dBASE

DSN=NWind;PWD=test

SQL Server

DSN=MyServer;UID=dbayer; PWD=123;Database=Pubs

ORACLE

DNS=My Oracle Data Source;DBQ=MYSER VER;UID=JohnS;PWD=Sesame

  • 接続コードで使用するデータ ソース名 (DSN) は、データ ソースへ接続する前に定義しておく必要があります。

  • 接続コードは、配列または文字列として入力できます。接続コードが 250 文字を超える場合は、配列として入力する必要があります。

  • 接続コードを使ってデータ ソースにアクセスできないときは、エラー値 #N/A が返されます。

  • 出力セル    省略可能です。接続完了後に接続コードが配置されるセル参照を指定します。SQL.REQUEST をワークシートに入力すると、出力セルは無視されます。

    • 接続完了後に SQL.REQUEST から接続コードが返されるようにするときは、出力セルを指定します。この場合は、SQL.REQUEST をマクロ シートに入力する必要があります。

    • 出力セルを省略した場合、接続完了後に接続コードは返されません。

  • ダイアログ表示    省略可能です。ドライバーのダイアログ ボックスをいつ表示するか、またどのオプションを使用可能にするかを指定します。次の表に記載されている番号のいずれかを使用します。ダイアログ表示を省略すると、既定値として 2 が使用されます。

ダイアログ表示

説明

1

ドライバーのダイアログ ボックスを常に表示します。

2

接続コードの情報とデータ ソースの指定だけでは接続を完了できない場合にのみ、ドライバーのダイアログ ボックスが表示されます。ダイアログ ボックスのオプションはすべて使用可能です。

3

接続コードの情報とデータ ソースの指定だけでは接続を完了できない場合にのみ、ドライバーのダイアログ ボックスが表示されます。ダイアログ ボックスのオプションのうち、必要のないものは淡色表示されて使用できません。

4

ドライバーのダイアログ ボックスは表示されません。接続が失敗した場合、エラーが返されます。

  • ステートメント    省略可能です。データ ソースに対して実行する SQL ステートメントを指定します。

    • 指定したデータ ソース上でステートメントを実行できないときは、エラー値 #N/A が返されます。

    • ステートメントに参照を連結することで、クエリを更新できます。次の例では、$A$3 が変更されるたびに、SQL.REQUEST で新しい値を使ってクエリが更新されます。

"顧客から名前を選択、バランスを取るように >"& $A$ 3 &""します。

Microsoft Excel で扱うことができる文字列の長さは 255 文字に制限されています。ステートメントがこの長さを超えている場合、縦方向のセル範囲にクエリを入力し、範囲全体をステートメントとして使用します。セルの値は連結され、完全な SQL ステートメントが作成されます。

  • 列名表示    省略可能です。列名を結果の 1 行目に表示するかどうかを指定します。列名を結果の 1 行目に表示する場合は、この引数を TRUE に設定します。列名を返さない場合は、FALSE に設定します。列名表示を省略すると、列名は返されません。

戻り値

  • この関数の動作がすべて完了すると、クエリ結果の配列、またはクエリの影響を受ける行の番号が返されます。

  • 接続コードを使ってデータ ソースにアクセスできないときは、エラー値 #N/A が返されます。

解説

  • SQL.REQUEST は、配列として入力できます。SQL.REQUEST を配列として入力した場合、入力範囲に合った配列が返されます。

  • 配列数式を入力したセル範囲のサイズが戻り値の個数よりも大きい場合は、戻り値の配列に空白セルが追加され、自動的にセル範囲のサイズが調整されます。

  • 戻り値の個数が配列数式を入力したセル範囲のサイズよりも多い場合は、すべての戻り値が配列として返されます。

  • SQL.REQUEST 関数の引数の順序は、Visual Basic for Applications の SQLRequest 関数の引数の順序とは異なります。

使用例

DBASE4 という名前の dBASE データベースのクエリを実行するとします。セルに次の式を入力すると、クエリ結果の配列が返され、1 行目に列名が示されます。

SQL します。要求 ("DSN = NWind DBQ = c:\msquery; フィルター dBASE4 ="、c15、2、"Custmr_ID、注文から Due_Date を選択 WHERE order_Amt > 100"、TRUE)。

注: 機械翻訳についての免責事項: この記事の翻訳はコンピューター システムによって行われており、人間の手は加えられていません。マイクロソフトでは、英語を話さないユーザーがマイクロソフトの製品、サービス、テクノロジに関するコンテンツを理解するのに役立てるため、こうした機械翻訳を提供しています。記事は機械翻訳されているため、用語、構文、文法などに誤りがある場合があります。

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×