[表計算][OpenOfficeCalc] OpenOfficeCalcマクロ
WSHバッチで,OpenOffice.org Calcを自動操作する方法 (表計算のブックを,COM経由で新規作成・読み書き・保存)
WSH/JScript OpenOffice.org excel
Microsoft OfficeのExcelは,タブレット・スマホでは無料化したもののデスクトップ環境ではまだ有料。
オフィス・ソフトの代金を節約するため,フリーソフトのOpenOfficeで代用している人も多い。
ところでMS OfficeをVBAなどで自動操作できるのと同じく,OpenOfficeもバッチから呼び出し,文書を読み書きできる。
ここでは,OpenOffice.org(OOo)の表計算ソフトであるCalcをWindowsでバッチから呼び出すようなサンプルコードを掲載する。
OOoがインストールしてあれば,すぐに実行可能。下記のコードをooo.jsで保存してダブルクリックするだけ。バッチを実行すると,コード中の通りのファイルパスに,新規ブックが保存される。日本語のファイル名も,まったく問題なく扱うことができている。
これをひな形にして,Calcでの操作をどんどん自動化しよう。
主に言語とシステム開発に関して
◆code......
// OpenOfficeを操作
var service_manager = WScript.CreateObject("com.sun.star.ServiceManager");
var desktop = service_manager.createInstance("com.sun.star.frame.Desktop")
// Calcの新規ブックを作成して開く
var doc = desktop.loadComponentFromURL(
"private:factory/scalc",
"_blank",
0,
[]
);
// ファイルパスを指定して既存のブックを開きたい場合は,
// 第一引数の "private:factory/scalc", を
// "file:///C:/フォルダ名/開きたいブック.odt" のように書き換える。
// 1枚目のシート
var sheet = doc.Sheets.getByName("Sheet1");
// シート名ではなく番号で取得したい場合:
// var sheet = doc.Sheets.getByIndex( 0 );
// ※Sheets(0)という記法だとうまくいかない場合がある
// セルに書き込み
sheet.getCellByPosition( 0, 0 ).String = "ゎぃ ゎ ヵッォ ゃ"
sheet.getCellByPosition( 0, 1 ).Formula = "=1+1";
// ファイルは既存か?
if( doc.hasLocation() && ( ! doc.isReadOnly() ) ){
// 上書き保存
doc.store();
}
else
{
// ブックを新規保存
doc.storeAsURL( "file:///C:/temp/テスト1.odt", [] );
}
// Calcを終了
//desktop.terminate();
// OpenOfficeを操作
var service_manager = WScript.CreateObject("com.sun.star.ServiceManager");
var desktop = service_manager.createInstance("com.sun.star.frame.Desktop")
// Calcの新規ブックを作成して開く
var doc = desktop.loadComponentFromURL(
"private:factory/scalc",
"_blank",
0,
[]
);
// ファイルパスを指定して既存のブックを開きたい場合は,
// 第一引数の "private:factory/scalc", を
// "file:///C:/フォルダ名/開きたいブック.odt" のように書き換える。
// 1枚目のシート
var sheet = doc.Sheets.getByName("Sheet1");
// シート名ではなく番号で取得したい場合:
// var sheet = doc.Sheets.getByIndex( 0 );
// ※Sheets(0)という記法だとうまくいかない場合がある
// セルに書き込み
sheet.getCellByPosition( 0, 0 ).String = "ゎぃ ゎ ヵッォ ゃ"
sheet.getCellByPosition( 0, 1 ).Formula = "=1+1";
// ファイルは既存か?
if( doc.hasLocation() && ( ! doc.isReadOnly() ) ){
// 上書き保存
doc.store();
}
else
{
// ブックを新規保存
doc.storeAsURL( "file:///C:/temp/テスト1.odt", [] );
}
// Calcを終了
//desktop.terminate();