中小企業情報化塾

今回からコードの説明に入ります。申し訳ありませんが、本ブログはVBS/VBAの文法解説ではないので、そこまでは検索サイトで”VBScript 入門”といったキーワードで検索ください。
まずはVBSからMicrosoft Excel(r)(以後Excelと呼びます)を呼び出す基本パターンを紹介します。下記のプログラムをテキストファイルにコピーして、拡張子を.vbsにしてください。
ファイル名はなんでもかまいません。

Set fso = CreateObject("Scripting.FileSystemObject")
Set ExcelApp = CreateObject("Excel.Application")
const xlUp = -4162
set args = WScript.Arguments

ReadExcelFile  args(0)
ExcelApp.Quit
WScript.Quit

Sub ReadExcelFile( filename )
  set ofile = fso.getFile( filename )
  set oBook = ExcelApp.Workbooks.Open(ofile.path) 
  set oSheet = oBook.WorkSheets(1)
  maxrow =  oSheet.Cells(oSheet.Rows.count,1).end(xlUp).row
  for row = 1 to maxrow
    WScript.echo oSheet.Cells(row,1).value
  next
  oBook.close
end sub

次にコマンドプロンプトを開き、.vbsを保存したフォルダに移動(cd <パス>)します。
そして
>cscript プログラム名.vbs Excelファイル名
と実行すると、Excelファイルの1列名(A列)の情報が書き出されるはずです。
もちろんこれだけではただ”あーそうか”というだけで何の価値もありませんが、まだ基礎ですので我慢願います。回を重ねるごとにだんだん価値が出てきますので
では解説です。
1行目:Set fso = CreateObject(“Scripting.FileSystemObject”)
ファイル操作を行う標準オブジェクト(Scripting.FileSystemObject)を作成しています。
2行目:Set ExcelApp = CreateObject(“Excel.Application”)
Excelを呼びだすためのオブジェクトを作成しています。
3行目:const xlUp = -4162
定数を定義しています。Excelの最終行を意味する値です。
4行目:set args = WScript.Arguments
プログラムを実行する際の、引数を操作するオブジェクトを作成しています。
6行目:ReadExcelFile args(0)
Excelを呼び出す手続きである”ReadExcelFile”を呼び出しています。引数にExcelのファイル名をわたしています。
7行目:ExcelApp.Quit
Excelを終了しています。
8行目:WScript.Quit
プログラムを終了しています。

次にExcelを読み出す本体の手続きを解説します。
10行目:Sub ReadExcelFile( filename )
手続きの始まりの宣言です。引数がFilenameという変数に入ります。
11行目:set ofile = fso.getFile( filename )
Excelファイルを探して、ファイルオブジェクトに保存しています。
12行目:set oBook = ExcelApp.Workbooks.Open(ofile.path)
Excelファイルを開いて、Bookオブジェクトを作成しています。ofile.pathはExcelファイルのフルパスです。
13行目: set oSheet = oBook.WorkSheets(1)
Excelの一番左(最初)のシートを示すオブジェクトを作成しています。
14行目: maxrow = oSheet.Cells(oSheet.Rows.count,1).end(xlUp).row
最終行の行番号をとりだしてmaxrowに保存しています。
15行目: for row = 1 to maxrow
行を一行づつループで回します。
16行目:WScript.echo oSheet.Cells(row,1).value
Row行、1列の値をコンソール(標準出力)に出力しています。1を2にすれば2列目になります。
今回は直接出力していますが、当然変数に一時的に保存して加工することも可能です。
17行目: next
ループの終わりです。
17行目: oBook.close
Excelを閉じます。(これをしないと画面で見えなくともExcelファイルが開きっぱなしになります。)
18行目:end sub
手続きの終わりです。

ここまではExcelファイルをVBSから読み出す標準手続きであり、何も工夫はありません。ただ、VBAしか触ったことのない方はVBSからExcelファイルを読み出す方法がわからないかと思い、前段としてこの回を設けました。
今後の紹介は、すべて今回のスクリプトがベースになりますので、理解しておいてください。なお、今回はわかりやすさを重視して変数宣言等を省略しています。

*Excelは、米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。