Office ScriptsでExcelテーブル操作を完全自動化!作成・削除・名前変更の初心者ガイド
生徒
「Excel Onlineで毎日、手作業で表を作って名前を変えるのが大変なんです。Office Scripts(オフィススクリプト)を使えば、テーブルの作成や削除も自動でできるって本当ですか?」
先生
「もちろんです!Office Scriptsの『ListObject(リストオブジェクト)』という機能を使えば、バラバラのデータを一瞬で綺麗なテーブルに変換したり、不要になったら消したり、好きな名前に変更したりといった操作が自由自在にできますよ。」
生徒
「プログラミング未経験の私でも、テーブルを自動で操れるようになりますか?」
先生
「大丈夫ですよ。Office ScriptsはTypeScriptという言語を使いますが、基本の形さえ覚えれば、パソコンに詳しくなくても魔法のようにExcelを動かせます。今日はテーブル操作の基本をゆっくり解説しますね!」
1. Office Scriptsとは?
Office Scripts(オフィススクリプト)は、Microsoft 365のExcel Online(エクセルオンライン)で利用できる強力な自動化ツールです。これまでExcelの自動化といえば「VBA(マクロ)」が主流でしたが、Office Scriptsはクラウド上で動作するため、ブラウザだけで完結し、さらにはPower Automateとの連携も得意としています。
このスクリプトはTypeScript(タイプスクリプト)というプログラミング言語をベースにしています。「言語」と聞くと難しく感じるかもしれませんが、要するに「Excelに対する命令書」をテキストで書くだけです。例えば、「この範囲をテーブルにして!」「このテーブルの名前を『売上表』に変えて!」といった命令をコードで記述します。これにより、ボタン一つで複雑な作業を瞬時に終わらせることができるようになります。
2. テーブル操作の主役「ListObject」を理解しよう
Excelには「ただのセルに並んだデータ」と、構造化された「テーブル」の2種類があります。Office Scriptsの世界では、この「テーブル」のことを専門用語でListObject(リストオブジェクト)と呼びます。プログラミングにおいて、物事にはそれぞれ名前(型)がついているのです。
なぜ「テーブル」ではなく「ListObject」と呼ぶのでしょうか。それは、プログラムがExcelの中にあるデータを扱う際に、「これは普通の文字ではなく、機能を持ったリストの集まり(Object)ですよ」と認識させるためです。このListObjectという概念を理解しておくと、公式リファレンスを読んだり、より高度なコードを書いたりする際に非常に役立ちます。まずは「ListObject = テーブルのこと」と覚えておけば完璧です。
3. データをテーブルに変換する(作成の自動化)
まずは、シート上にある普通のデータ範囲を「テーブル」に変換する方法を学びましょう。これを自動化すると、CSVファイルなどから読み込んだ生のデータを、瞬時にフィルター機能付きの綺麗な表に変えることができます。作成には addTable という命令(関数)を使います。
例えるなら、机の上にバラバラに置かれた書類を、一つの「クリアファイル」にまとめて整理するようなイメージです。プログラムでは、「どの範囲をファイルにまとめるか」を指定するだけでOKです。
function main(workbook: ExcelScript.Workbook) {
// 現在開いているシートを取得します
let selectedSheet = workbook.getActiveWorksheet();
// A1からC5の範囲にあるデータを「テーブル」に変換します
// 第2引数の true は「一番上の行が見出し(ヘッダー)であること」を意味します
let newTable = workbook.addTable(selectedSheet.getRange("A1:C5"), true);
// 作成したことを確認するためにログを表示します
console.log("テーブルを作成しました!");
}
このコードを実行すると、A1からC5までの範囲が青色のテーブルデザインに変わり、フィルター機能が自動で付与されます。手動で「挿入」タブから「テーブル」をクリックする手間が省けるわけです。
4. テーブルに名前をつけて管理しやすくする(名称変更)
テーブルを作成した直後、Excelは自動的に「テーブル1」や「テーブル2」といった名前を付けます。しかし、たくさんのテーブルがある場合、どれが何のデータか分からなくなってしまいます。そこで、プログラムを使ってわかりやすい名前に変更しましょう。
名前を変更するには、setName という命令を使います。これは、新しく買ったクリアファイルに「4月分売上」というラベルを貼る作業に似ています。名前をつけておけば、後からその名前を呼ぶだけで簡単にデータを呼び出せるようになります。
function main(workbook: ExcelScript.Workbook) {
// すべてのテーブルの中から最初の1つを取得します
let tables = workbook.getTables();
let targetTable = tables[0];
// テーブルの名前を「SalesData2026」に変更します
targetTable.setName("SalesData2026");
// 変更後の名前を確認します
console.log("新しいテーブル名は: " + targetTable.getName());
}
上記のコードでは tables[0] という書き方をしていますが、これは「一番最初に見つかったテーブル」という意味です。プログラムの世界では、数は0から数え始めるというルールがあります。これで、作成したテーブルに自動で名前をつける準備が整いました。
5. 不要になったテーブルを削除する(削除の自動化)
データ処理の過程で、一時的にテーブルを作って計算し、最後には削除したい場合があります。あるいは、古いデータをクリアして新しく作り直したい時も便利です。テーブルを消すには delete という命令を使います。
注意点として、テーブルを削除しても「中身のデータ」がすべて消えるわけではありません。「テーブルという枠組み(書式やフィルター)」が消えて、普通のセルデータに戻る場合と、完全に削除される場合があります。Office Scriptsの delete() 関数は、テーブルそのものをシートから取り除きます。
function main(workbook: ExcelScript.Workbook) {
// 「SalesData2026」という名前のテーブルを探して取得します
let myTable = workbook.getTable("SalesData2026");
// もしテーブルが見つかったら、削除を実行します
if (myTable) {
myTable.delete();
console.log("テーブルを削除しました。");
} else {
console.log("削除するテーブルが見つかりませんでした。");
}
}
if (myTable) という部分は「もし myTable が存在していたら」という条件分岐です。存在しないものを消そうとするとエラーになってしまうため、このように優しく確認してから命令を出すのがプログラミングのコツです。
6. 既存のテーブル一覧を取得してループ処理する
1つのシートに複数のテーブルがある場合、それらをまとめて操作したいことがあります。「全部のテーブルの名前をチェックしたい」とか「特定の条件のテーブルだけ色を変えたい」といったケースです。そんな時に便利なのがループ処理(繰り返し)です。
getTables() 関数を使うと、ブック内にあるすべてのテーブルをリスト(配列)として取得できます。これを forEach という機能を使って一つずつ取り出してみましょう。これは、学校の先生がクラス全員の名簿を一人ずつ読み上げて出席を取るような動作です。
function main(workbook: ExcelScript.Workbook) {
// ブック内のすべてのテーブルを取得します
let allTables = workbook.getTables();
// 一つ一つのテーブルに対して処理を繰り返します
allTables.forEach((table, index) => {
// テーブルの名前をログに出力します
console.log("見つかったテーブル (" + index + "): " + table.getName());
});
}
実行結果は以下のようになります。
見つかったテーブル (0): SalesData2026
見つかったテーブル (1): Table2
見つかったテーブル (2): InventoryList
このように、複数のテーブルがあっても一気に把握することができるため、大量のデータを扱う際に非常に強力な武器となります。
7. 初心者が知っておきたいエラー回避のポイント
プログラムを動かしていると、必ずと言っていいほど「エラー」に遭遇します。特によくあるのが「指定した名前のテーブルが見つからない」というミスです。これを防ぐためには、コードの中で「安全確認」を入れることが重要です。
例えば、テーブルを新しく作る前に「もし同じ名前のテーブルがすでにあったら、先にそれを消してから作る」といった処理を加えると、エラーが起きにくくなります。また、セル範囲を指定する際にデータが入っていない空っぽの場所を指定してしまうと、テーブル作成に失敗することがあります。Office Scriptsを使いこなすには、こうした「例外的な状況」を想像して、事前に対策を立てておくことが大切です。
パソコンを触ったことがない方でも、「もし~だったら~する」という人間の思考プロセスをそのままコードに書けば良いだけなので、難しく考えすぎないでくださいね。Office Scriptsのエディタには「コードの修正候補」を教えてくれる機能もついているので、それを活用しながら少しずつ慣れていきましょう。
8. テーブル操作をマスターして業務効率を上げよう
テーブル操作の自動化ができるようになると、Excel作業のスピードは劇的に向上します。手作業で10分かかっていた「データの整形・テーブル化・名前付け」といった一連の流れが、Office Scriptsなら1秒もかからずに終わります。空いた時間で、もっとクリエイティブな仕事や、ゆっくりお茶を飲む時間に充てることができますね。
今日学んだ「作成 (addTable)」「名前変更 (setName)」「削除 (delete)」は、あらゆる自動化の基礎となる技術です。まずは自分の手元にあるExcelファイルで、簡単な表を作ってコードを実行してみてください。最初は失敗しても構いません。プログラムは何度でもやり直しがききます。一歩ずつ、Excel自動化のプロフェッショナルを目指していきましょう!