MS-ExcelファイルをCSV形式で保存するVBScript

bonlifeです。大量のExcelファイルをCSVにする必要が出てきたので、慣れないVBScriptを書いてみましたよ。書いた後にググッたらほぼ同じスクリプトがありました(MS-ExcelファイルをCSV形式で保存するWSHスクリプト)が、気にしないことにします!

  • カレントフォルダのExcelファイルの特定のシートをCSVに変換 (excelToCsv.vbs)
Option Explicit
' On Error Resume Next

' 変数の宣言

Dim Msg
Dim objFS
Dim objFolder
Dim objFiles
Dim objFile
Dim objExcel
Dim targetSheetNum

' CSVに変換するシートを指定

targetSheetNum = 2

' 開始処理

Msg = MsgBox("はーじめーるよー!(^o^)ノ", vbYesNo, "はーじめーるよー!(^o^)ノ")
If Msg = vbNo Then
    MsgBox "やっぱりやめるのね。。。orz", vbOkOnly, "ショックです。。。"
    WScript.Quit
End If

' カレントフォルダのExcelファイルを1つずつ処理
' Excelかどうかはファイル名が ".xls" で終わるかどうかで判断

Set objFS     = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFS.GetFolder(".")
Set objFiles  = objFolder.Files
Set objExcel  = CreateObject("Excel.Application")

For Each objFile In objFiles
    If Right(objFile.Name, 4) = ".xls" Then
        Dim fullPathFileName
        fullPathFileName = objFS.BuildPath(objFolder,objFile.Name)
        ' MsgBox fullPathFileName, vbOkOnly, "処理中のファイル"
        ExcelToCsv objExcel, fullPathFileName, targetSheetNum
    End If
Next

Set objFS    = Nothing
Set objExcel = Nothing

MsgBox "たぶん終わったよー!(^o^)ノ", vbOkOnly, "終わったよー(^o^)ノ!"

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ExcelToCSV
'  - Excelの機能を使ってExcelをCSVに変換
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub ExcelToCsv(objExcel, fullPathFileName, targetSheetNum)
    Dim xlSheet
    Dim csvFileName
    objExcel.DisplayAlerts = False
    objExcel.Workbooks.Open(fullPathFileName)
    Set xlSheet = objExcel.Worksheets(targetSheetNum)
    ' 1行目(見出し行)は削除
    xlSheet.Rows(1).Delete
    csvFileName = Left(fullPathFileName, Len(fullPathFileName) - 4) + ".csv"
    ' CSVで保存するには SaveAs の2つ目の引数で 6 を指定
    xlSheet.SaveAs csvFileName, 6
    objExcel.Workbooks.Close
End Sub

変数のスコープがよくワカラナイなぁ…。変数名の付け方が相当あやしいですが、そこはご愛嬌。後、VBScriptには例外処理みたいなのがないんですね…。「Try..Catch..Finally in ... VBScript? Sure!」で紹介されているようにClassを使えばなんとかなりそうですが、まぁ、使い捨てスクリプトなので気にしないことにします。
次からはVBScriptで書くぐらいだったらWSH(JScript)で書くことにします! (違いを理解していませんが…orz)