Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
生徒
「Excelでシートがたくさん増えてきて、名前を変えたり並べ替えたりするのが大変です。自動でできませんか?」
先生
「できます。Office Scriptsを使えば、Excelのワークシートをまとめて整理したり、同じ作業を一気に実行できます。」
生徒
「プログラミングはやったことがなくて、パソコンもあまり触ったことがありません……。」
先生
「大丈夫です。Excelでいつも手でやっている操作を、文章みたいなコードにするだけです。今日は複数シートを効率的に管理する方法を見ていきましょう。」
1. Office Scriptsとは?
Office Scripts(オフィス スクリプト)とは、Excel Onlineで使える自動化の仕組みです。 Excelの画面にある「自動化」タブからスクリプトを実行すると、人がマウスで操作する代わりに、Excelが自動で作業してくれます。 たとえば「シートを作る」「シート名を変更する」「いらないシートを削除する」といった作業を、まとめて一瞬で終わらせることができます。
難しそうに見えますが、考え方はとてもシンプルです。 いつも自分がExcelでやっている操作を、順番に文章で指示するイメージです。 この指示を書くために使うのが、TypeScript(タイプスクリプト)という言語ですが、Office ScriptsではExcel専用の命令が用意されているため、初心者でも読みやすい形になっています。
2. 複数シート管理が大変になる理由
Excelで作業をしていると、「月別シート」「部署別シート」「日付ごとのシート」など、ワークシートがどんどん増えていきます。 最初は問題なくても、シートが10枚、20枚と増えると、管理がとても大変になります。
たとえば、次のような経験はありませんか。 毎回同じ名前のシートを作っている、並び順がバラバラで探しにくい、不要なシートを消し忘れる、すべてのシートに同じ文字を入力したい。 これらはすべて、Office Scriptsで自動化しやすい作業です。
Office Scriptsを使うと、Excelのワークブック全体(すべてのシートをまとめたもの)を一度に操作できます。 これが「複数シートを効率的に管理する」という意味です。
3. ワークブックとワークシートの基本
ここで、基本用語を整理します。 ワークブックとは、Excelファイル全体のことです。 一方で、下のタブに並んでいる一枚一枚のページをワークシートと呼びます。
Office Scriptsでは、まずワークブックを操作対象として受け取り、そこからワークシートを取り出して操作します。 これは「箱(ワークブック)の中に、たくさんのノート(ワークシート)が入っている」と考えると分かりやすいです。
複数シート管理のスクリプトでは、「すべてのシートを取得する」「特定の名前のシートを探す」といった処理がよく登場します。
4. すべてのシート名を取得するスクリプト
まずは、ワークブックの中にあるすべてのワークシート名を取得する基本的なスクリプトを見てみましょう。 これは複数シート管理の土台になります。
function main(workbook: ExcelScript.Workbook) {
const sheets = workbook.getWorksheets();
sheets.forEach(sheet => {
console.log(sheet.getName());
});
}
このコードでは、「ワークブックに入っているシートを全部集めて、順番に名前を表示する」ということをしています。
getWorksheetsは「すべてのシートを取得する」という命令です。
forEachは「一つずつ順番に見る」という意味で、初心者の方は「全部のシートに同じことをするための仕組み」と覚えれば十分です。
5. シートを自動で作成・名前変更する
次は、複数のシートをまとめて作成し、名前を付ける例です。 毎回同じようなシートを手で追加する作業は、Office Scriptsが得意とする分野です。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.addWorksheet("売上集計");
sheet.getRange("A1").setValue("売上データ");
}
このスクリプトを実行すると、「売上集計」という名前のワークシートが自動で作られます。
addWorksheetは「新しいシートを追加する」命令です。
Excelで「+」ボタンを押しているのと同じことを、コードで行っています。
このように、シート作成と初期設定を一度に行えるため、作業のミスや手間を減らすことができます。
6. 不要なシートをまとめて削除する
複数シート管理では、「もう使わないシートを削除する」場面もよくあります。 Office Scriptsを使えば、条件に合うシートだけをまとめて削除できます。
function main(workbook: ExcelScript.Workbook) {
const sheets = workbook.getWorksheets();
sheets.forEach(sheet => {
if (sheet.getName().includes("旧")) {
sheet.delete();
}
});
}
この例では、シート名に「旧」という文字が含まれているシートを削除しています。
includesは「この文字が含まれているか」を調べる命令です。
「旧データ」「旧版」など、名前のルールを決めておくと、自動整理がとても楽になります。
7. すべてのシートに同じ内容を書き込む
最後に、複数のワークシートすべてに同じ文字を入力する例です。 これは「注意書き」や「作成日」などを一括で入れたいときに便利です。
function main(workbook: ExcelScript.Workbook) {
const sheets = workbook.getWorksheets();
sheets.forEach(sheet => {
sheet.getRange("A1").setValue("このシートは自動生成されています");
});
}
人の手で一枚ずつ入力すると時間がかかりますが、Office Scriptsなら一瞬です。 このような積み重ねが、Excel作業の大きな時短につながります。
複数シートを効率的に管理するスクリプト集は、Excel自動化の第一歩としてとても重要です。 まずは「シートを取得する」「順番に処理する」という考え方に慣れていきましょう。