ADO を使用して ADO データ ソースから Excel にデータを転送する方法

文書翻訳 文書翻訳
文書番号: 295646 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

Microsoft Excel は強力なデータ分析ツールであるため、Visual Basic および VBA のアプリケーション開発者は、分析のために Excel ワークシートにデータを転送することがよくあります。この資料では、特定の SQL コマンドに対して Microsoft Jet 固有の構文を使用して、このプログラミング タスクを実行する ActiveX Data Objects (ADO) の手法について説明します。

この資料ではプログラミング ソリューションについて説明しており、Excel のメニュー ([ファイル] メニューの [開く]) を使用したデータのインポート機能や、Microsoft Query ([データ] メニューの [外部データの取り込み]) の使用については説明していません。

SQL コマンドではなく Excel オートメーションを使用する補完的なプログラミング ソリューションの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
246335 [XL2003] オートメーションを使用して ADO レコードセットのデータを Excel に転送する方法

詳細

次の例で cnSrc は Jet 4.0 OLE DB プロバイダを使用した Northwind サンプル Jet データベースへの ADO 接続を示します。

コピー方法

SELECT INTO ステートメントを使用して、新しいテーブル (Excel の場合は新しいワークシート) を作成しながら、Jet が読み込むことのできるデータ ソースからデータの転送先にデータをコピーできます。転送先のワークシート名を指定する場合、[Sheet1$] などのドル記号の構文は使用しないようにします。転送先にブックが存在するかどうかは、どちらでもかまいませんが、転送先のワークシートとして既存のシートを指定することはできません。

Excel ブックの新しいシートに Microsoft Access Northwind データベースから得意先テーブル全体をコピーするコピー コマンドを記述する方法は 3 つあります。各構文には 1 つの SQL ステートメントが必要で、その構文によって転送先のワークシートの 1 番目の行に列見出しが作成されます。
  • 次の例は SELECT INTO 構文を使用しています。
    Dim strSQL As String
    strSQL = "SELECT * INTO [Excel 8.0;Database=" & App.Path & _ 
        "\book1.xls].[Sheet1] FROM 得意先"
    cnSrc.Execute strSQL
    					
  • 次の例は SELECT INTO ... IN 構文を使用しています。
    strSQL = "SELECT * INTO [Sheet1] IN '' [Excel 8.0;Database=" & App.Path & _
        "\book1.xls] FROM 得意先"
    						
    ここでは、角かっこで囲まれた転送先のデータベースの情報の前に、空白を囲んだ単一引用符があります。この構文を使用する場合、型を示す引数 ("Excel 8.0" の部分) は角かっこ内に記述します。
  • 次の例は IN 句に別の構文を使用しています。
    strSQL = "SELECT * INTO [Sheet1] IN '" & App.Path & _
        "\book1.xls' 'Excel 8.0;' FROM 得意先"
    						
    ここでは、転送先ファイルのパスの後に、型を示す引数が別に記述されています。

追加方法

INSERT INTO ... IN ステートメントを使用して、Jet が読み込むことのできるデータ ソースからデータの転送先にデータを追加できます。転送先にブックとワークシートの両方が存在する必要があります。既存のワークシートを参照している場合、転送先のワークシート名を指定するには標準のドル記号の構文 ([Sheet1$] など) を使用する必要があります。また、列見出しが既に存在する必要があります。つまり、このステートメントは既存のテーブルにデータを追加する場合にのみ使用できます。

既に適切な列見出しを持つ既存の Excel ワークシートに、Northwind データベースから得意先テーブル全体をコピーする追加コマンドを記述する方法は 2 つあります。
  • 次の例は INSERT INTO ... IN 構文を使用しています。
    strSQL = "INSERT INTO [Sheet1$] IN '' [Excel 8.0;Database=" & App.Path & _
        "\book1.xls] SELECT * FROM 得意先"
    						
    ここでも、角かっこで囲まれた転送先のデータベース情報の前に、空白を囲む単一引用符があります。型を示す引数は、各かっこ内に記述します。
  • 次の例は IN 句に別の構文を使用しています。
    strSQL = "INSERT INTO [Sheet1$] IN '" & App.Path & _
        "\book1.xls' 'Excel 8.0;' SELECT * FROM 得意先"
    					

関連情報

Jet 固有の構文の詳細については、Jet SQL ヘルプ ファイル (JETSQL40.chm) の SELECT INTO ステートメント、INSERT INTO ステートメント、および IN 句に関するトピックを参照してください。

プロパティ

文書番号: 295646 - 最終更新日: 2006年9月26日 - リビジョン: 2.3
この資料は以下の製品について記述したものです。
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Data Access Components 2.0
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Excel 97 Standard Edition
キーワード:?
kbdatabase kbhowto kbjet kbmdacnosweep KB295646
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com