ワークシートの基本操作

ワークブックへのシート追加や、ワークシートのアクティブ化、ワークシートプロパティの設定、ワークシート削除などが基本的なワークシート操作に含まれます。これらの操作は、データ操作用のXファンクションとあわせ、Page および Wks オブジェクトを使用して実行します。以下にいくつか実践的なサンプルがあります。

新しいワークシートを追加する

newsheet Xファンクションは、新しいシートを追加するのに使います。

// 3つのワークシートを持つワークブックを作成 
// そしてロングネームとショートネームを"mydata"にする
newbook name:="mydata" sheet:=3 option:=lsname;
// 4列持つ "source" という名前のシートを現在のワークブックに追加
newsheet name:=source cols:=4;

ワークシートをアクティブにする

ワークブックはOriginのオブジェクトで列を含むワークシートで構成されています。 ブック内のワークシートは、pageにある内部的なレイヤです。言い換えれば、ワークシートはレイヤオブジェクトから派生し、ワークブックはページオブジェクトから派生したものです。ページのアクティブレイヤは、page.active または page.active$ プロパティで表され、ワークシートをアクティブにするのに使用されます。

// 4つのワークシートをもつ新たなブックを作成
newbook sheet:=4;
 
page.active = 2;	// インデックスでワークシートをアクティブ
page.active$ = sheet3;	// 名前でワークシートをアクティブ

ワークシートプロパティを修正する

ワークシートオブジェクトを使う

ワークシートがアクティブなとき、wks.= と入力し、Enterキーを押して、すべてのワークシートプロパティを一覧表示します。これらのプロパティのほとんどは書き込み可能で、直接修正することができます。例えば、

// ワークシートの名前を変更
wks.name$ = Raw Data;
// 列の数を4にセット
wks.ncols = 4;
// 列幅を8文字に修正
wks.colwidth = 8;
// ワークシートヘッダの最初のユーザ定義パラメータを表示
wks.userparam1 = 1;

wks.maxRows と wks.nRows の2つのプロパティは似ています。前者は、ワークシート内で値がある最も大きな行インデックス、後者はワークシートの行数の読み書きを行います。次のスクリプトで違いを見ることができます。

newbook;  // 新しいワークブックを作成
col(b) = {1:10};  // 列Bの第1セルから10セルまでに、1から10を入力
wks.maxRows = ;
wks.nRows = ;

Originは、wks.maxRowsに対して10を出力し、wks.nRowsに対しては32を出力します。

もし、ワークシートがアクティブではない場合、wksオブジェクトの前に、ワークシート名(またはワークブック名)を指定するために以下のシンタックスを使用します。

[WorkbookName]WorksheetNameOrIndex!wks

または、ワークシートのrange変数を使用できます。例えば

// プロジェクトを開く
string strOpj$ = system.path.program$;
strOpj$ += "Samples\COM Server and Client\Basic Stats on Data.opj";
doc -o %(strOpj$);

wks.nCols = ;  // アクティブなワークシートの列数を出力
// ワークシート[RawData]Data!の列数を出力
[RawData]Data!wks.nCols = ;  
// RawDataワークブックの第1ワークシートの名前を出力
[RawData]1!wks.name$ = ;  
 
// rangeを使用
range rWks = [RawData]Data!;  // RawDataワークブックのDataシートのためのrange変数
rWks.userparam1 = 1;  // ワークシートの第一ユーザパラメータを表示

Xファンクションを使う

wksオブジェクト以外に、Xファンクションを使って、ワークシートプロパティを修正することができます。これらのXファンクションの名前は、通常、"w"で始まります。wcolwidth, wcellformat, wclearなどになります。wks.colwidthを使わずに、下記のように列のサイズを変更することもできます。

wcolwidth 2 10; // 2番目の列幅を10にセット

ワークシートを削除する

layer -d コマンドは、ワークシートまたはグラフレイヤを削除するのに使用します。

// 6つのワークシートをもつワークブックを作成し、
// ワークブック名をMyBook$とする
// 最初のワークシートがアクティブになる
newbook sheet:=6 result:=MyBook$;
 
// 新しくワークシートを作成し、名前を "My Sheet"とする
newsheet name:="My Sheet";
 
page.active = 1;  // 最初のワークシートをアクティブにする
layer -d;  // アクティブワークシートの削除
 
// インデックスによるワークシートの削除
// アクティブワークブック(またはグラフ)内の3番目のシート(またはレイヤ)を削除
layer -d 3;
 
// ワークシート名で削除
layer -d "Sheet5";
 
// rangeによる特定ワークシートの削除
range rs = [%(MyBook$)]"My Sheet"!;  // 特定シートのrangeを定義
layer -d rs;
 
// 文字列変数に保存された名称のワークシートの削除
string strSheet$ = "Sheet3";
layer -d %(strSheet$);

文字列変数として保存された名称のワークシートを削除するには、

//__report$ にはOriginが作成した最後のレポートシートの名前を保持
layer -d %(__report$);

変数 __report$ は、特定のオブジェクトの最後に使ったインスタンスを記録するシステム作成の文字列変数の例です。このような変数の一覧は、リファレンステーブルにあります。