CSVファイル、XLS、XLSXファイルをVBスクリプトで開く方法


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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です