これを行うには、他の人がすでに提案している多くの優れた方法があります。「SQL トラック経由で Excel データを取得する」に沿って、ここにいくつかのポインターがあります。
Excel には「データ接続ウィザード」があり、別のデータ ソースから、またはまったく同じ Excel ファイル内からインポートまたはリンクすることができます。
Microsoft Office (および OS) の一部として、関心のある 2 つのプロバイダーがあります。古い "Microsoft.Jet.OLEDB" と最新の "Microsoft.ACE.OLEDB" です。(データ接続ウィザードなどを使用して) 接続を設定するときにそれらを探します。
Excel ワークブックに接続すると、ワークシートまたは範囲はテーブルまたはビューに相当します。ワークシートのテーブル名は、ワークシートの名前にドル記号 ("$") を追加し、角かっこ ("[" と "]") で囲んだものです。範囲の場合、それは単に範囲の名前です。名前のないセル範囲をレコードソースとして指定するには、標準の Excel の行/列表記をシート名の末尾に角かっこで囲んで追加します。
ネイティブ SQL は (多かれ少なかれ) Microsoft Access の SQL になります。(以前は JET SQL と呼ばれていましたが、Access SQL は進化しており、JET は非推奨の古い技術だと思います。)
例、ワークシートを読む:SELECT * FROM [Sheet1$]
例、範囲の読み取り:SELECT * FROM MyRange
例、無名のセル範囲を読み取る:SELECT * FROM [Sheet1$A1:B10]
詳細を調べるのに役立つ書籍や Web サイトが数多くあります。
その他の注意事項
既定では、Excel データ ソースの最初の行には、フィールド名として使用できる列見出しが含まれていると想定されています。そうでない場合は、この設定をオフにする必要があります。そうしないと、データの最初の行がフィールド名として使用されなくなります。これは、オプションHDR= setting
を接続文字列の拡張プロパティに追加することによって行われます。指定する必要のないデフォルトは ですHDR=Yes
。列見出しがない場合は、指定する必要がありますHDR=No
。プロバイダーは、フィールドに F1、F2 などの名前を付けます。
ワークシートの指定に関する注意事項: プロバイダーは、データのテーブルが、指定されたワークシートの一番上、一番左、空白でないセルから始まると想定します。言い換えれば、データのテーブルは、行 3、列 C から問題なく開始できます。ただし、たとえば、セル A1 のデータの上と左にワークシートのタイトルを入力することはできません。
範囲の指定に関する注意: ワークシートをレコードソースとして指定すると、プロバイダーはワークシート内の既存のレコードの下にスペースが許す限り新しいレコードを追加します。範囲 (名前付きまたは名前なし) を指定すると、スペースが許す限り、範囲内の既存のレコードの下に新しいレコードも追加されます。ただし、元の範囲に対して再クエリを実行すると、結果のレコードセットには範囲外の新しく追加されたレコードが含まれません。
のデータ型 (試してみる価値あり) CREATE TABLE: Short, Long, Single, Double, Currency, DateTime, Bit, Byte, GUID, BigBinary, LongBinary, VarBinary, LongText, VarChar, Decimal
。
「古い技術」の Excel (拡張子が xls のファイル) に接続しています: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyFolder\MyWorkbook.xls;Extended Properties=Excel 8.0;
. Microsoft Excel 5.0 および 7.0 (95) ワークブックには Excel 5.0 ソース データベース タイプを使用し、Microsoft Excel 8.0 (97)、9.0 (2000)、および 10.0 (2002) ワークブックには Excel 8.0 ソース データベース タイプを使用します。
「最新」の Excel (ファイル拡張子が xlsx のファイル) への接続:Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;"
データをテキストとして扱う: IMEX 設定は、すべてのデータをテキストとして扱います。Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";
(詳細はhttp://www.connectionstrings.com/excelを参照)
詳細については、http://msdn.microsoft.com/en-US/library/ms141683 (v=sql.90).aspxおよびhttp://support.microsoft.com/kb/316934を参照してください。
VBA 経由で ADODB 経由で Excel に接続
Microsoft JET 4 の詳細 ( http://support.microsoft.com/kb/275561 )