Office ScriptsでExcelテーブル(ListObject)を操作する方法|Excel自動化・API基礎をやさしく解説
生徒
「Office ScriptsでExcelのテーブルを自動化したいです。ListObjectって何ですか?」
先生
「Excelの“表”をプログラムから操作できる機能です。Office Scriptsを使えば、テーブルの追加や行の登録、削除も自動でできます。」
生徒
「マクロみたいなものですか?」
先生
「似ていますが、Office ScriptsはExcel Onlineで使える自動化機能で、TypeScriptという言語で書きます。クラウド上で安全に動かせるのが特徴です。」
生徒
「初心者でもできますか?」
先生
「大丈夫です。まずはテーブルの基本操作から一緒に学びましょう。」
1. Office Scriptsとは?
Office Scriptsは、Excel Onlineで使えるExcel自動化ツールです。ブラウザ上のExcelで「自動化」タブからスクリプトを作成し、ボタン一つで処理を実行できます。Excelマクロと似ていますが、クラウド環境で動く点が特徴です。
使用する言語はTypeScriptです。TypeScriptとは、JavaScriptをもとにしたプログラミング言語で、初心者でも比較的読みやすい文法になっています。難しそうに感じるかもしれませんが、実際は「Excelの操作を文章で書く」イメージです。
この記事では、Excelテーブル操作、ListObject操作、行追加、列取得、データ取得といったキーワードを中心に、Office Scripts APIの基礎を解説します。
2. テーブル(ListObject)とは?
テーブルとは、Excelで「挿入」→「テーブル」を押して作る、見出し付きの表のことです。並び替えやフィルターが自動で使える便利な表です。
Office Scriptsでは、このテーブルをListObjectというAPIで操作します。APIとは、アプリを操作するための命令セットのことです。リモコンのボタンのようなものだと考えてください。
つまり、ListObjectは「Excelの表を動かすためのリモコン」です。
3. テーブルを新しく作成する方法
まずはExcelシートにテーブルを作成してみましょう。以下のコードは、A1からB3までの範囲をテーブルとして登録します。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const range = sheet.getRange("A1:B3");
range.setValues([
["名前", "年齢"],
["田中", 25],
["佐藤", 30]
]);
const table = sheet.addTable("A1:B3", true);
table.setName("社員テーブル");
}
addTableの第二引数trueは「1行目を見出しにする」という意味です。これでExcelテーブルが自動生成されます。
4. テーブルに行を追加する方法
次に、既存のテーブルに新しいデータを追加します。毎日データを追加する業務にも活用できます。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const table = sheet.getTable("社員テーブル");
table.addRow(-1, ["鈴木", 28]);
}
-1は「一番下に追加する」という意味です。Excel自動化では、このようにボタン一つでデータ登録が可能になります。
5. テーブルのデータを取得する方法
テーブルの中身を取得する方法も重要です。データ分析や自動処理の基礎になります。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const table = sheet.getTable("社員テーブル");
const range = table.getRangeBetweenHeaderAndTotal();
const values = range.getValues();
console.log(values);
}
getRangeBetweenHeaderAndTotalは、見出しと合計行を除いたデータ部分を取得します。
[["田中",25],
["佐藤",30],
["鈴木",28]]
このように配列形式でデータが取得できます。配列とは、データを並べた箱のようなものです。
6. 特定の列を取得する方法
列単位でデータを扱うことも可能です。例えば年齢だけを取り出したい場合です。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const table = sheet.getTable("社員テーブル");
const ageColumn = table.getColumnByName("年齢");
const ageValues = ageColumn.getRangeBetweenHeaderAndTotal().getValues();
console.log(ageValues);
}
[[25],
[30],
[28]]
このようにOffice Scripts APIを使えば、Excelテーブル操作がとても簡単に実現できます。
7. テーブルの行を削除する方法
不要なデータを削除する処理も自動化できます。手作業で削除する必要はありません。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const table = sheet.getTable("社員テーブル");
table.deleteRowsAt(0, 1);
}
deleteRowsAtは「何行目から何行削除するか」を指定します。これにより業務効率化が可能になります。
8. Office Scriptsでテーブル操作を自動化するメリット
Office Scriptsを使ったExcelテーブル自動化には多くのメリットがあります。繰り返し作業の削減、入力ミス防止、データ処理の高速化などが代表例です。
特に業務効率化やDX推進の現場では、Excel自動化は非常に重要です。ListObject操作を理解すれば、売上管理、顧客管理、在庫管理など多くの業務で応用できます。
初心者の方は、まずはテーブル作成、行追加、データ取得の三つを確実に理解しましょう。それだけでも十分にExcel自動化の基礎は身につきます。
まとめ
今回は、Office Scriptsを使ってExcelテーブルを操作する方法について、基礎から順番に学びました。Office Scriptsは、Excel Onlineで動作する自動化機能であり、TypeScriptという言語を使ってExcelの操作をプログラムで記述できる仕組みです。従来のマクロとは異なり、クラウド環境で安全に実行できる点が大きな特徴です。
Excelテーブルは、見出し付きの表として管理できる便利な機能であり、Office ScriptsではListObjectとして扱われます。ListObjectを利用することで、テーブルの作成、行の追加、列の取得、データの読み取り、行の削除といった操作を柔軟に制御できます。これにより、売上管理表や顧客管理表、在庫管理表などの業務データを効率的に処理できます。
テーブルを新規作成する場合はaddTableを使用し、既存のテーブルを取得する場合はgetTableを利用します。また、addRowを使えば最下部にデータを自動追加でき、getRangeBetweenHeaderAndTotalを使えばデータ部分のみを安全に取得できます。さらに、getColumnByNameを活用すれば、特定の列だけを抽出することも可能です。
Excel自動化において重要なのは、「どの範囲を対象にしているのか」「見出しを含むのか除外するのか」を正しく理解することです。Office Scripts APIは直感的に設計されているため、メソッド名を読むだけでも意味が推測できます。これは初心者にとって大きな利点です。
業務効率化を実現するためには、単にコードを書くのではなく、日々の繰り返し作業をどのように自動化できるかを考えることが重要です。例えば、毎日の売上データを自動追加する処理や、特定条件のデータだけを抽出する処理なども応用可能です。Office ScriptsとExcelテーブルを組み合わせることで、手作業を減らし、入力ミスを防止し、作業時間を短縮できます。
まずは基本操作であるテーブル作成、行追加、データ取得、列取得、行削除を確実に理解しましょう。この基礎が身につけば、より高度なデータ分析や自動レポート作成にも発展できます。Excel自動化の第一歩として、Office Scriptsのテーブル操作は非常に有効です。
サンプル総合プログラム
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const range = sheet.getRange("A1:B2");
range.setValues([
["商品名", "価格"],
["りんご", 100]
]);
const table = sheet.addTable("A1:B2", true);
table.setName("商品テーブル");
table.addRow(-1, ["みかん", 120]);
const dataRange = table.getRangeBetweenHeaderAndTotal();
const values = dataRange.getValues();
console.log(values);
}
[["りんご",100],
["みかん",120]]
生徒
「Office ScriptsでExcelテーブルを操作する流れがよく分かりました。ListObjectはテーブルを操作するための仕組みなんですね。」
先生
「その通りです。Excelテーブルをプログラムで扱うための窓口がListObjectです。addTableやaddRow、getTableなどの基本操作を覚えれば、ほとんどの業務自動化に応用できます。」
生徒
「行追加や列取得も簡単でした。繰り返しの入力作業を自動化できそうです。」
先生
「良い視点ですね。Excel自動化の本質は、繰り返し作業の削減と正確性の向上です。テーブル操作を理解した今、次は条件分岐や集計処理にも挑戦してみましょう。」
生徒
「まずは基本をしっかり復習して、Excelテーブル操作を自分の業務に活かしてみます。」
先生
「それが一番大切です。基礎を固めれば応用は自然に広がります。Office ScriptsでのExcel自動化を、ぜひ実務で活用してください。」