MS-ExcelファイルをCSV形式で保存するスクリプト
挨拶代わりに、以前id:NAT:20060620#p2で書いたスクリプトを置いておきます。
MS-ExcelファイルをCSV形式で保存するWSHスクリプト(JScript)です。
// saveAsCsv.js: MS-ExcelファイルをCSV形式で保存する if(WScript.Arguments.length != 1) { WScript.Echo("Usage: cscript saveAsCsv.js <file_name>"); WScript.Quit(1); } // カレントディレクトリ var WshShell = WScript.CreateObject("WScript.Shell"); var currentDirectory = WshShell.CurrentDirectory; // Excelファイルのパス var xlsFileName = WScript.Arguments(0); var xlsFilePath = currentDirectory + "\\" + xlsFileName; // CSVファイルのパス(xlsFileNameの拡張子を".csv"に変換したファイル名を使う) var csvFileName = xlsFileName.replace(/\.[^.]+$|$/, ".csv"); var csvFilePath = currentDirectory + "\\" + csvFileName; // ExcelのApplicationオブジェクトを取得 var exelApplication = WScript.CreateObject("Excel.Application"); // メッセージダイアログ表示の抑制 exelApplication.DisplayAlerts = false; try { exelApplication.WorkBooks.Open(xlsFilePath); var book1 = exelApplication.Workbooks(xlsFileName); var sheet1 = book1.Worksheets(1); // CSVで保存 (6 は 定数XlFileFormat.xlCSV の値) sheet1.SaveAs(csvFilePath, 6); WScript.Echo("Saved as: " + csvFileName); } catch(e) { // エラー発生 WScript.Echo("error: " + e.description); } finally { // Excelを終了 exelApplication.Quit(); }
やってることは大したことなくて、単に本物のMS-Excelを起動してファイルを読み込ませて、CSV形式で保存しているだけです。要は、MS-Excelのマクロで書けるようなことを、外からJScriptで実行してるだけ。
Windows 2000やXPに入っているcscriptコマンドを使い、コマンドプロンプトで以下を入力すれば起動できる。もちろん、MS-Excelがインストールされている環境でないと動きません。
cscript saveAsCsv.js Book1.xls
ファイル名を引数に指定するのではなく、直接プログラム中に書くのがちょっと情けないな・・・。そのうち手直しするかな。
ファイル名を引数に指定するように修正しました。