CSVファイル、エクセルファイルをVBスクリプトから読み取る方法を調べてみましたのでそのメモ書きです。
エクセルファイルを開く場合もサンプルCSVと同じ構成で動作確認しています。
読み取った値をさらにデータベースに書き込む等の処理を書き足して、データのやり取りにエクセルを利用する人がいても、都度フォーマットが変更になる等無ければ、便利にデータ加工が出来ると思います。
Windows7 + Office2010がインストールされた環境で動作確認しています。
x64のOSで上記スクリプトを実行する際はx86用のコマンドプロンプトで実行してください。
C:\Windows\SysWOW64\cmd.exe /c cscript hogehoge.vbs
CSVを開く場合
Option Explicit Dim objADO Dim objRS Dim TARGET_DIR Dim TARGET_CSV 'TARGET_DIRにCSVを保存しているパス、TARGET_CSVに対象CSV名を入力する TARGET_DIR = "C:\Users\pnpk\Desktop\csv" TARGET_CSV = "sample.csv" Set objADO = CreateObject("ADODB.Connection") objADO.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _ "DBQ=" & TARGET_DIR & ";" & _ "ReadOnly=1" Set objRS = _ objADO.Execute("select * from " & TARGET_CSV & "") Do Until objRS.Eof = True WScript.echo objRS("列1") & " " & objRS("列2") objRS.MoveNext Loop objRS.Close objADO.Close Set objRS = Nothing Set objADO = Nothing
サンプルCSVファイル
列1,列2 hogehoge,3 pnpk,4
エクセルファイルを開く場合
Option Explicit Dim objADO Dim objRS Dim TARGET_XLS Dim TARGET_XLSSheet 'TARGET_XLSにエクセルファイルのパス、TARGET_XLSSheetにシート名を入力する TARGET_XLS = "C:\Users\pnpk\Desktop\csv\sample.xlsx" TARGET_XLSSheet = "Sheet1" Set objADO = CreateObject("ADODB.Connection") objADO.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _ "DBQ=" & TARGET_XLS & ";" & _ "ReadOnly=1" Set objRS = _ objADO.Execute("select * from [" & TARGET_XLSSheet & "$]") Do Until objRS.Eof = True WScript.echo objRS("列1") & " " & objRS("列2") objRS.MoveNext Loop objRS.Close objADO.Close Set objRS = Nothing Set objADO = Nothing