Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
生徒
「毎回同じExcelシートをコピーして名前を変える作業が大変です。自動化できますか?」
先生
「できます。Office Scriptsを使えば、シートのコピー作業を一瞬で終わらせられます。」
生徒
「パソコンもあまり触ったことがないんですが、それでも大丈夫ですか?」
先生
「Excelの画面を操作する感覚で書けるので、順番に理解すれば問題ありません。今日はシートコピー自動化のコツを見ていきましょう。」
1. Office Scriptsとは?Excelシート操作を自動化する仕組み
Office Scriptsとは、Excel Onlineで使える自動化機能です。人がマウスで行っている操作を、文字で書いた命令としてExcelに伝えます。 たとえば「このシートをコピーする」「名前を変更する」といった作業を、ボタン一つで実行できるようになります。
プログラミングと聞くと難しそうですが、Office ScriptsはExcel専用に作られているため、 普段Excelを使っている人ほど理解しやすいのが特徴です。 Excelワークブック全体やワークシートを操作できるので、事務作業の効率化にとても向いています。
2. シートコピー処理とは?手作業との違いを理解する
シートコピー処理とは、既存のワークシートを複製して、新しいシートを作る操作のことです。 手作業では、シート名を右クリックして「移動またはコピー」を選び、チェックを入れて…と複数の手順が必要です。
Office Scriptsでは、この一連の流れを一行ずつの命令として書きます。 料理で例えるなら、「材料を切る」「炒める」「盛り付ける」を順番にレシピとして書くイメージです。 同じレシピを何度も使えるので、ミスも減り、作業時間も短くなります。
3. シートコピーの基本コードを書いてみよう
まずは一番シンプルなシートコピーの例です。 このコードは、今表示しているシートをコピーして、新しいシートを作成します。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
sheet.copy();
}
workbookはExcelファイル全体、worksheetはその中の1枚のシートを表します。 「copy」は「コピーしなさい」という命令です。 英単語の意味そのままなので、辞書感覚で覚えていくと理解しやすくなります。
4. コピーしたシートに名前を付けるベストな方法
シートをコピーしただけでは、同じような名前が並んでしまい、後から分かりにくくなります。 そこで、コピー後にシート名を変更するのがベストプラクティスです。
function main(workbook: ExcelScript.Workbook) {
const baseSheet = workbook.getActiveWorksheet();
const newSheet = baseSheet.copy();
newSheet.setName("コピーしたシート");
}
「setName」は名前を付ける命令です。 ノートにタイトルを書くような感覚で、シートの役割がすぐ分かる名前を付けましょう。 これだけで、Excelワークブック全体の見やすさが大きく変わります。
5. 同じシートを何枚もコピーする場合の考え方
月別や日別のシートを作る場合、同じシートを何枚もコピーしたいことがあります。 そんなときは、同じ処理を繰り返す書き方を使います。 繰り返しとは「同じ作業を何回も行う」という意味です。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
for (let i = 1; i <= 3; i++) {
const copied = sheet.copy();
copied.setName("作業用シート" + i);
}
}
「for」は回数を指定して繰り返すための書き方です。 ここでは3回コピーし、「作業用シート1」「作業用シート2」と順番に名前を付けています。 人が数字を書き換える代わりに、Excelが自動でやってくれます。
6. 既存シート名と重ならないようにする工夫
シート名がすでに存在すると、エラーになることがあります。 そのため、コピー前に「同じ名前があるか」を確認する考え方が大切です。 これは安全運転のようなものです。
function main(workbook: ExcelScript.Workbook) {
const sheets = workbook.getWorksheets();
const base = workbook.getActiveWorksheet();
const newSheet = base.copy();
newSheet.setName("バックアップ_" + sheets.length);
}
「getWorksheets」はすべてのシートを取得する命令です。 シートの枚数を使って名前を決めることで、重複を避けやすくなります。 初心者のうちは、このようなシンプルな工夫がとても重要です。
7. シートコピー自動化のベストプラクティスまとめ的考え方
Office Scriptsでシートコピー処理を自動化するときは、 「どのシートをコピーするのか」「コピー後に何をするのか」を最初に決めることが大切です。
手作業を紙に書き出してから、それをコードに置き換えると失敗しにくくなります。 Excel操作の延長線として考えることで、プログラミング未経験の人でも無理なく理解できます。 シートコピーはOffice Scripts学習の入り口として、とてもおすすめのテーマです。