こんにちは!これまでの記事で、Office スクリプトの概要と、開発環境の準備、簡単なスクリプトの実行方法を学びました。
「VBAではWorkbookとかWorksheetとか使ってたけど、Office スクリプトではどう書くんだろう?」
VBA経験者のあなたなら、このようにオブジェクトの扱いやメソッドについて疑問に思っているかもしれませんね。ご安心ください!Office スクリプトもVBAと同様に、Excelの要素を「オブジェクト」として捉え、それらを操作する「メソッド」や「プロパティ」を使います。
この記事では、Office スクリプトで最もよく使うであろう主要なオブジェクト(Workbook, Worksheet, Rangeなど)と、それらに紐づく基本的なメソッドを、具体的なコード例を交えながら詳しく解説します。
VBAとの違いも比較しながら解説しますので、スムーズにOffice スクリプトのオブジェクトモデルを理解できるでしょう。
この記事で学べること
- Office スクリプトの基本的なオブジェクト(
Workbook,Worksheet,Range)の概念 - 各オブジェクトの主要なメソッドとプロパティ
- VBAのオブジェクト操作との比較
- 実際にコードを書いてオブジェクトを操作してみよう
Office スクリプトの基本的なオブジェクト構造
Office スクリプトもVBAと同様に、Excelの階層構造をオブジェクトで表現します。
Workbook(ブック): Excelファイル全体を表すオブジェクトです。VBAのThisWorkbookやWorkbooks("ファイル名.xlsx")に相当します。Worksheet(シート): ブック内の個々のシートを表すオブジェクトです。VBAのWorksheets("シート名")やSheets(インデックス)に相当します。Range(セル/範囲): シート内の単一のセルやセルの範囲を表すオブジェクトです。VBAのRange("A1")やCells(行, 列)に相当します。
これらのオブジェクトを順にたどることで、特定のセルや範囲を操作できます。
Workbook オブジェクト:ブック全体を操作する
main関数に渡される workbook 引数が、現在のExcelブックを表す Workbook オブジェクトです。このオブジェクトを使って、シートの追加やアクティブなシートの取得などを行います。
よく使うメソッドとプロパティ
getActiveWorksheet(): 現在アクティブなシートをWorksheetオブジェクトとして取得します。getWorksheet(name: string): 指定した名前のシートをWorksheetオブジェクトとして取得します。getWorksheets(): ブック内のすべてのシートをWorksheetオブジェクトの配列として取得します。addWorksheet(name?: string): 新しいシートを追加します。オプションでシート名を指定できます。getName(): ブックの名前(ファイル名)を取得します。
コード例:アクティブシートの名前を取得してみよう
現在のブックのアクティブシートの名前をデバッグ用のコンソールに出力するスクリプトです。
function main(workbook: ExcelScript.Workbook) {
// アクティブなシートを取得
let activeSheet = workbook.getActiveWorksheet();
// アクティブシートの名前を取得し、コンソールに出力
console.log("アクティブシートの名前: " + activeSheet.getName());
}このコードを実行すると、コードエディター下部の「コンソール」ペインにアクティブシートの名前が表示されます。

Worksheet オブジェクト:シートを操作する
Worksheet オブジェクトは、シートの選択、名前の変更、セルの取得など、シートレベルの操作を行います。
よく使うメソッドとプロパティ
getName(): シートの名前を取得します。setName(name: string): シートの名前を変更します。activate(): そのシートをアクティブにします。getRange(address: string): 指定したアドレス(例: “A1”, “B2:C5″)の範囲をRangeオブジェクトとして取得します。getUsedRange(): シート内で使用されている全範囲をRangeオブジェクトとして取得します。VBAのUsedRangeに相当します。
コード例:新しいシートを追加して名前を変更し、アクティブにしてみよう
新しいシートを追加し、「新しいデータ」という名前に変更してアクティブにするスクリプトです。
function main(workbook: ExcelScript.Workbook) {
// 新しいシートを追加
let newSheet = workbook.addWorksheet();
// シートの名前を「新しいデータ」に変更
newSheet.setName("新しいデータ");
// 新しいシートをアクティブにする
newSheet.activate();
console.log("「新しいデータ」シートが追加され、アクティブになりました。");
}
Range オブジェクト:セルや範囲を操作する
Range オブジェクトは、Office スクリプトで最も頻繁に利用するオブジェクトの一つです。セルの値の読み書き、書式設定、クリアなど、データ操作のほとんどをこのオブジェクトで行います。
よく使うメソッドとプロパティ
getValue(): 単一セルの値を取得します。(複数セルの場合はgetValues())setValue(value: any): 単一セルに値を設定します。(複数セルの場合はsetValues())getValues(): 範囲内のすべてのセルの値を取得し、二次元配列として返します。setValues(values: any[][]): 範囲内のすべてのセルに値を、二次元配列を使って設定します。getFormula(): セルの数式を取得します。setFormula(formula: string): セルに数式を設定します。clear(applyTo?: ExcelScript.ClearApplyTo): セルの値、書式、コメントなどをクリアします。引数でクリアする内容を指定できます。getFormat(): セルの書式設定を操作するためのRangeFormatオブジェクトを取得します。getEntireRow(): 範囲を含む行全体をRangeオブジェクトとして取得します。getEntireColumn(): 範囲を含む列全体をRangeオブジェクトとして取得します。
コード例:A1からB2の範囲にデータを書き込み、書式を設定してみよう
指定した範囲に値を書き込み、背景色を黄色に設定するスクリプトです。
function main(workbook: ExcelScript.Workbook) {
let selectedSheet = workbook.getActiveWorksheet();
// A1からB2の範囲を取得
let range = selectedSheet.getRange("A1:B2");
// 範囲に値を設定 (二次元配列を使用)
range.setValues([
["名前", "点数"],
["田中", 85]
]);
// A1:B1の範囲の背景色を黄色に設定
selectedSheet.getRange("A1:B1").getFormat().getFill().setColor("yellow");
console.log("A1:B2にデータと書式を設定しました。");
}このコードを実行すると、アクティブシートのA1:B2セルにデータが入力され、A1:B1セルの背景色が黄色に変わります。

次の記事はこちら

まとめ
この記事では、Office スクリプトの核となる主要オブジェクト(Workbook, Worksheet, Range)と、それらのオブジェクトが持つ基本的なメソッドについて学習しました。
Workbookオブジェクトはブック全体を、Worksheetオブジェクトは個々のシートを、Rangeオブジェクトはセルや範囲を操作する。- 各オブジェクトには、データの読み書き、シートの追加、書式設定などを行うための様々なメソッドが用意されている。
- VBAのオブジェクト操作と概念は似ているが、記述方法がTypeScriptベースである点が異なる。
これらのオブジェクトとメソッドを理解することで、Excel Web版でのデータ操作や自動化の幅が大きく広がります。VBAでの経験がきっと役立つはずです!
次回の記事では、いよいよPower AutomateとOffice スクリプトを連携させる方法について解説します。これまでの知識を組み合わせることで、Office スクリプト単体ではできなかった、より高度で複雑な業務自動化が実現できるようになります。どうぞお楽しみに!

コメント