🐏
カレントディレクトリのXLSファイルを全部CSVファイルに変換する
はじめに
大量のExcelファイル(*.xls)をCSV形式に変換してくれと言われたので、VBScriptでインチキした。
なぜ今更CSVなのかは聞いてくれるな
コード
カレントディレクトリのExcelファイル(*.xls, *.xlsx)らしきものをCSVに変換しようと試みるやつ
xls2csv.vbs
Option Explicit
Dim objFS, objFolder, objFile, strExt
Dim objExcel
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFS.GetFolder(".")
Set objExcel = CreateObject("Excel.Application")
For Each objFile In objFolder.Files
strExt = objFS.GetExtensionName(objFile.Name)
If strExt="xls" OR strExt="xlsx" Then
Dim inputFileName
inputFileName = objFS.BuildPath(objFolder,objFile.Name)
ExcelToCsv objExcel, inputFileName
End If
Next
Set objFS = Nothing
objExcel.Quit
Set objExcel = Nothing
MsgBox "Done."
Sub ExcelToCsv(objExcel, inputFileName)
Dim xlSheet
Dim outputFileName
outputFileName = Left(inputFileName, Len(inputFileName)- (Len(strExt) + 1)) & ".csv"
objExcel.DisplayAlerts = False
objExcel.Workbooks.Open(inputFileName)
Set xlSheet = objExcel.Worksheets(1)
xlSheet.SaveAs outputFileName, 6
objExcel.Workbooks.Close
End Sub
仕様上、1枚目のシートしか出力しないようになっている。
複数シートがあって、個別に出力したい場合はさらにExcelToCsv
サブルーチン中でループを回す必要がある
xlSheet.SaveAs
の第2引数を変えればCSVファイル以外にも変換できそう → 参考
Discussion