Javascriptはなんとなく書けるんだけど、
会社のWindows PCにnode.jsを入れたらダメ、エクセルマクロだと仰々しい・・・。
なんかいい方法は無いんだろうか。
そこで検討してもらいたいのがPoweShell JScriptなのです!
JScriptとは
Wikiより引用
JScript(ジェイ・スクリプト)は、マイクロソフト社製のスクリプト言語であり、Microsoft Windows 上で動作する。
JavaScriptと類似しており、Internet Explorer を使用したクライアントサイドスクリプティング処理、および Internet Information Services(IIS) などを使用したサーバサイドスクリプティング処理を記述することができる。
JScriptはECMAScript3にほぼ準拠していますので、基本的なことはできると思います。
また、OLE操作ができますので、Ofiiceアプリの操作も可能になります。
JScirptファイル
拡張子はjsです。Windows上でjsファイルを作ると、勝手にWindows Based Script Hostに関連付けされます。
jsの中身はそのままjavascriptのコードを書けます。
また、他のJScriptファイルをインクルードしたいときやOfiiceの定数を使いたいときは、
wsf という拡張子にして、下記のように記述します。
<job id=“ジョブ名">
<reference guid="{00020813-0000-0000-C000-000000000046}"/>
<script language="JScript" src="module.js"></script>
<script language="JScript">
var hoge = 1;
</script>
</job>
サンプル(Excel操作)
例えばExcelファイルを操作したいときは下記のような記述になります。
// エクセルオブジェクト生成
var excel = new ActiveXObject("Excel.Application");
// ワークブック新規作成
var book = excel.Workbooks.Add();
// シート
var sheet = book.WorkSheets(1); // 1シート目(1オリジン!)
// セル
sheet.Range('A1').Value = 'ほげほげ';
sheet.Cells(1,2).Value = 'ふがふが'; // 0からではなく、1オリジン!
sheet.Cells(2,1).Formula = '=hyperlink("./hoge/fuga.pdf")'; // エクセル関数を使うときはFormula!
// 保存
excel.DisplayAlerts = false; // 上書き
book.SaveAs( 'filename.xlsx' );
// 終了
book.Close();
excel.Quit();
excel = null;
簡単ですね!僕は、納品時に、納品するエクセルファイル全てを
- 1シート目のA1にフォーカスを合わせる
- 印刷モードにする
- 枠線を消す
というJSCriptを用意しています。
みなさんも、是非PoweShell JScriptを使ってみてください。