#はじめに
業務中に発生した以下のような要望をVBScriptを用いて解決できたので、その方法をご紹介します。(Windows限定)
●大量にあるExcelをひとつずつ開いてデータを取得したい!
●大量にあるExcelをひとつずつ開いて修正したい!
●大量にあるExcelをひとつずつ開いて...etc
※本記事ではExcelをひとつひとつ開いて、特定のセルにコマンドライン引数で与えたデータを挿入するところまでをご紹介します。
私と同じく1日中Excelとにらめっこしている方の手助けになればと思います。
#完成図
#1.ファイル作成
VBScriptを書くためにvbs形式でファイルを作成します。
今回は"test.vbs"というファイルを作成します。
次にvbsファイルを連続実行するためにbatファイルを作成します。
今回は"test_run.bat"というファイルを作成します。
流れとしてはbatファイルからVBScriptを繰り返し実行していきます。
#2.VBScriptを書いていく
先ほど作成した"test.vbs"をエディタで下記のように修正します。
Dim excel_obj
Dim workbook
Dim worksheet
'Excelの機能を利用するために必要
Set excel_obj = CreateObject("Excel.Application")
'Excelを可視化
excel_obj.Visible = True
'開きたいExcelファイルを指定(絶対パス)
Set workbook = excel_obj.Workbooks.Open(WScript.Arguments(0))
'シートを指定(名前Or番号で指定)
Set worksheet = workbook.Sheets(1)
'シート(1)の"A1"セルに値を入れる
worksheet.Range("A1").Value = WScript.Arguments(1)
'上書き保存
workbook.Save
'ワークブックを閉じる
workbook.Close
'Excelを閉じる
excel_obj.Quit
#3.batファイルを書いていく
"test_run.bat"をエディタで開きます。
タブ区切りで、"test.vbsのパス" "開きたいExcelのパス" "セルに入れたい値"を指定します。
下記のフォルダ構成ならば
こんなかんじです。
C:\Qiita_Test\test.vbs C:\Qiita_Test\abc_01.xlsx test_01
C:\Qiita_Test\test.vbs C:\Qiita_Test\abc_02.xlsx test_02
C:\Qiita_Test\test.vbs C:\Qiita_Test\abc_03.xlsx test_03
C:\Qiita_Test\test.vbs C:\Qiita_Test\abc_04.xlsx test_04
C:\Qiita_Test\test.vbs C:\Qiita_Test\abc_05.xlsx test_05
C:\Qiita_Test\test.vbs C:\Qiita_Test\abc_06.xlsx test_06
C:\Qiita_Test\test.vbs C:\Qiita_Test\abc_07.xlsx test_07
C:\Qiita_Test\test.vbs C:\Qiita_Test\abc_08.xlsx test_08
C:\Qiita_Test\test.vbs C:\Qiita_Test\abc_09.xlsx test_09
C:\Qiita_Test\test.vbs C:\Qiita_Test\abc_10.xlsx test_10
#4.実行
"test_run.bat"をダブルクリックして実行します。
実行するとコマンドプロンプトが起動し、順次Excelが立ち上がり、処理が実行されます。
コマンドプロンプトが閉じたら、すべての処理が終わった合図です。
実施後にExcelを確認すると、値がきちんと挿入されていることが分かると思います。
#おわりに
今回ご紹介した内容は必要最低限の処理のみとなります。
これを応用すれば基本的なデータの取得、加工などができるようになると思います。
この記事がだれかのお役に立てばいいなと思います。