Excel2007(Excel 12.0) と Excel2010 と Excel2013で確認しました。 ※ Excel 2010 は、Excel 14.0 だそうですが、接続文字列は Excel 12.0 でのみ動作しました。 Excel 2013(Windows8) では、Microsoft Access データベース エンジン 2010 再頒布可能コンポーネントをダウンロードしてインストールする必要があります。( ※参考1、※参考2 ) ( 32ビット版と64ビット版があるので選択してダウンロードします ) IMEX=1 : 概要としては、予期しない列の値の変化を抑制してくれます。仕様的には、「intermixed」で、データ行を常にテキストとして読み取ることをドライバーに指示しています。こちらを参照して下さい 関連する Microsoft ドキュメント [HOWTO] Visual Basic または VBA から ADO を Excel データで使用する コマンドプロンプトで、カレントに Book1.xlsx を置いて、cscript.exe excel_ado.vbs でテストします excel_ado.vbs
' ******************************************* ' オブジェクト作成 ' ******************************************* Set Cn = CreateObject( "ADODB.Connection" ) Set Rs = CreateObject( "ADODB.Recordset" ) ' ******************************************* ' スクリプトがあるディレクトリ ' ******************************************* ' ファイルシステムオブジェクト Set Fso = CreateObject( "Scripting.FileSystemObject" ) ' 現在実行されているスクリプトのフルパス strCurPath = WScript.ScriptFullName ' スクリプトのファイルオブジェクトを作成 Set obj = Fso.GetFile( strCurPath ) ' スクリプトファイルトが存在するフォルダオブジェクト Set obj = obj.ParentFolder ' そのフォルダのフルパス strCurPath = obj.Path ' ******************************************* ' 接続用の文字列を準備 ' ******************************************* ' 2007 以降の Excel FileName = "Book1.xlsx" ' 接続文字列 ConnectionString = _ "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strCurPath & "\" & FileName & ";" & _ "Extended Properties=""Excel 12.0 Xml;HDR=NO;IMEX=1""" ' HDR=YES にすると、一行目が列名になります。 ' HDR=NO の場合は、F1,F2,F3,F4,F5,F6,F7,F8,F9,F10 となっています ' ******************************************* ' 接続 ' ******************************************* on error resume next Cn.Open ConnectionString if Err.Number <> 0 then Wscript.Echo Err.Description Wscript.Quit end if on error goto 0 ' ******************************************* ' レコードセット取得 ' ******************************************* Query = "select * from [Sheet1$]" on error resume next Rs.Open Query, Cn if Err.Number <> 0 then Cn.Close Wscript.Echo Err.Description Wscript.Quit end if on error goto 0 ' ******************************************* ' タイトル出力 ' ******************************************* Buffer = "" For i = 0 to Rs.Fields.Count - 1 if Buffer <> "" then Buffer = Buffer & "," end if Buffer = Buffer & Rs.Fields(i).Name Next Wscript.echo Buffer & vbCrLf ' ******************************************* ' データ出力 ' ******************************************* Do While not Rs.EOF Buffer = "" For i = 0 to Rs.Fields.Count - 1 if Buffer <> "" then Buffer = Buffer & "," end if Buffer = Buffer & Rs.Fields(i).Value Next Wscript.echo Buffer Rs.MoveNext Loop ' ******************************************* ' レコードセットクローズ ' ******************************************* Rs.Close ' ******************************************* ' 接続解除 ' ******************************************* Cn.Close ' ******************************************* ' オブジェクト解放 ' ******************************************* Set Rs = Nothing Set Cn = Nothing
▼ 新旧接続文字列の比較( SQLServer の OPENDATASOURCE 関数による Excel の参照 )
select * from OPENDATASOURCE( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="C:\user\data\商品.xls";Extended properties=Excel 8.0' )...[Sheet1$] select * from OPENDATASOURCE( 'Microsoft.ACE.OLEDB.12.0', 'Data Source="C:\user\data\商品.xlsx";Extended properties=Excel 12.0' )...[Sheet1$]
関連する Mocrosodt ドキュメント Access 2010 を使用したデータ プログラミング 関連する記事
VBScriptドキュメント
|
【VBS + ADOの最新記事】
- VBScript : Oracle Database Express Edition 11g Release 2 に MDB(販売管理C) のデータをインポートする
- VBScript : PostgreSQL(9.3.4) に MDB(販売管理C) のデータをインポートする
- VBscript : 新しい Mictrosoft Access(2007以降)へ、古い MDB からデータを移行する
- VBScript : 古い Access2003 までのデータベース作成と新しい Access2007 以降のデータベース作成
- VBScript : Micrsoft Access 経由で、SQLServer のテーブルのデータを Excel にエクスポートする方法
- VBScript : ADO を使用して、MDB(Access2003) のデータを SQLite ODBC Driver で sqlite3(UTF-8) を作成
- VBScript +ADO / MDB から SQLite3 へ ODBC ドライバを使ってフィールドオブジェクトを使用した同一フォーマットのテーブル間のデータコピー(データベースは自動的に作成されま..
- VBScript : ADO経由の一時PL/SQL でエクスポートを実行する(Data Pump Export)
【VBScript関連のカテゴリ】