現在オフラインです。再接続するためにインターネットの接続を待っています

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

この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
概要
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 StringstrSQL = "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 - 最終更新日: 12/06/2015 01:59:21 - リビジョン: 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

  • kbnosurvey kbarchive kbdatabase kbhowto kbjet kbmdacnosweep KB295646
フィードバック