いまさら聞けないExcelの使い方講座
【Excel】Web版のExcelでも作業を自動化! CopilotでOffice Scriptsを作る
2026年10月19日 06:55
Excelで毎回同じ操作を繰り返しているなら、マクロ(VBA)による自動化が有効です。しかし、Web版Excelでは、マクロを実行できません。OneDriveやSharePointで共有しているExcelファイルをWebブラウザーで操作している場合には困りますよね。
そこで活用したいのが、Web版のExcelでも繰り返し作業を自動化できる「Office Scripts」です。JavaScriptを拡張したプログラミング言語「TypeScript」を使って、Excelの操作を自動化する仕組みです。「アクションレコーダー」で実際の操作を記録できるほか、「コードエディター」で直接記述することもできます。
とはいえ、プログラミングの知識がなければ、記録されたコードを修正するのは難しいでしょう。そこでCopilotの出番です。やりたいことを伝えて改修してもらいます。
今回は、共有している売上一覧から指定した日付の明細を抽出し、新しいシートに転記する処理を例に、Office Scriptsの基本的な使い方を紹介します。
まずはアクションレコーダーで操作を記録する
例えば、売上一覧から1日分の明細を別シートに保存するケースを考えてみましょう。複数人で作業するため、Web版のExcelを利用しているとします。毎回、売上日でフィルタリングして、表示されたデータをコピーし、新しいシートを作成して貼り付けるのは面倒です。
まずは「アクションレコーダー」で一連の操作を記録しましょう。デスクトップ版Excelの[マクロの記録]と同じ要領で、実際に行った操作が自動的にOffice Scriptsのスクリプトに変換されます。
なお、Office Scriptsの利用には、対応するMicrosoft 365の環境が必要です。組織の管理者設定やブラウザーの設定によっては、[自動化]タブが表示されない場合があります。
ここでは「売上日」列を「2026/10/13」で絞り込み、表示された明細を見出しとともにコピーします。貼り付け先の新しいシート名は「1013」とします。
これで一連の操作がOffice Scriptsのスクリプトとして記録されました。コードの内容を確認してみましょう。今回は、以下のように記録されました。
function main(workbook: ExcelScript.Workbook) {
let uriage = workbook.getTable("uriage");
// Apply checked items filter on table uriage column 売上日
uriage.getColumnByName("売上日").getFilter().applyValuesFilter([{ date: "2026-10-13", specificity: ExcelScript.FilterDatetimeSpecificity.day }]);
// Add a new worksheet with name "1013"
let _1013 = workbook.addWorksheet("1013");
let selectedSheet = workbook.getActiveWorksheet();
// Paste to range A1 on _1013 from range A1:G34 on selectedSheet
_1013.getRange("A1").copyFrom(selectedSheet.getRange("A1:G34"), ExcelScript.RangeCopyType.all, false, false);
// Auto fit the columns of range A:A on _1013
_1013.getRange("A:A").getFormat().autofitColumns();
}
「uriage」テーブルの「売上日」列を「2026/10/13」でフィルター処理しています。このほか、新しいシートを作成する「addWorksheet()」、データをコピーする「copyFrom()」などの処理が記録されています。なお、「//」から始まる行はコメントです。
しかし、コードをよく見ると、日付は「2026-10-13」、シート名は「1013」、コピー元の範囲も「A1:G34」と固定されています。アクションレコーダーは、基本的に操作した内容をそのまま記録するものだからです。
このままでは、別の日のデータを転記するたびにコードを修正する必要があります。また、「1013」シートが存在していると、同じ名前のシートを作成しようとしてエラーになります。日付を指定するだけで、別の日にも使えるコードに改修しましょう。
やりたいことを正確にCopilotに伝える
もちろん、最初からCopilotにOffice Scriptを作ってもらうことも可能です。ただ、アクションレコーダーを使えば、操作対象のテーブルや列、コピーする範囲などがコードに反映されています。実際の操作を記録したコードをCopilotに見せて指示するほうが、意図する処理を正確に伝えられます。
また、何を入力するのか、どのデータを転記するのか、同じ名前のシートがある場合にどうするのかなど、期待する動作を具体的に指定することが重要です。今回は、以下のプロンプトを送信しました。
以下は、Excelのアクションレコーダーで記録したOffice Scriptです。日付を指定して売上明細を別シートに転記できるようにこのコードを修正してください。
# 修正条件
1. スクリプトの実行時に、対象の日付を「MMDD」形式の4桁で指定できるようにしてください。ファイルは年単位で管理しているため、考慮する必要はありません。
2. テーブル「uriage」の「売上日」列を指定日でフィルターし、表示された行だけを、見出しを含めて新しいシートにコピーしてください。非表示の行はコピーしないでください。
3. データの行数が増減しても対応できるようにしてください。コピーする列は元のコードと同じA~G列です。
4. 新しいシートの名前は、指定した4桁の月日としてください。同名のシートが存在する場合は「(2)」「(3)」と連番を付けてください。既存のシートは削除・上書きしないでください。
5. 転記先には数式を残さず、計算済みの値と元の書式をコピーしてください。コピー先の列幅も自動調整してください。
6. 処理が終わったら「売上日」列のフィルターを解除してください。
7. 「//」で始まるコメントを日本語にしてください。
不要な例外処理や複雑な機能は追加せず、できるだけ短いコードにまとめてください。修正したコード全体を省略せずに出力してください。
# 元のコード
<アクションレコーダーで記録したコード>
ポイントは、実現したい処理だけでなく、避けたい動作も指定していることです。例えば、「非表示の行はコピーしない」「既存のシートは削除・上書きしない」といった条件が該当します。また、コメントを日本語にするよう指示しておけば、生成されたコードの内容を確認しやすくなります。
Copilotが作ったコードを実行する
Copilotが修正したコードの一部を確認してみましょう。まず、「main()」に「targetMMDD」というパラメーターが追加されました。これにより、スクリプトの実行時に「1014」といった4桁の月日を指定できるようになっています。
function main(workbook: ExcelScript.Workbook, targetMMDD: string) {
また、「getSpecialCells()」を使って、フィルター後に表示されているセルだけを取得する処理も追加されています。
const visibleAreas = sourceRange
.getSpecialCells(ExcelScript.SpecialCellType.visible)
.getAreas();
新しいシートを作成する際の処理には「while」を使った繰り返し処理が追加されました。同じ名前のシートが存在する間は番号を増やし、「1014(2)」「1014(3)」のように重複しない名前を付ける仕組みです。
sheetName = `${targetMMDD}(${number})`;
number++;
}
このほか、数式を計算済みの値として転記する処理や、最後にフィルターを解除する処理も追加されました。ここまで確認できたら、Office Scriptsのコードエディターで修正後のコードに置き換え、実行してみましょう。
まず「1014」を指定して実行してみます。「1014」シートが作成され、「2026/10/14」の明細だけが転記されることを確認します。また、「1015」シートが存在している状態でスクリプトを実行し、「1015(2)」というシートが追加されるかどうかも確認します。
なお、Copilotが作成したスクリプトが必ず正しく動作するとは限りません。コードエディターにエラーが表示された場合は、エラーメッセージとコードをCopilotに渡して修正を依頼できます。
依頼した修正内容で正しく動作しているように見えますが、実務で利用する前に、転記された明細の日付や件数、金額が元データと一致するか、数式が値に置き換わっているかなどを確認しておきましょう。
また、一覧に存在しない日付を指定した場合や、処理の途中でエラーが発生した場合の動作も確認しておきます。期待した結果にならない場合は、その現象を具体的にCopilotに伝えて修正してもらいましょう。
今回のようなデータの抽出・転記だけでなく、不要な列の削除や並べ替え、書式設定なども自動化の対象になります。普段から繰り返している操作をアクションレコーダーで記録し、必要な処理をCopilotで追加してみてください。































![1冊ですべて身につくHTML & CSSとWebデザイン入門講座[第2版] 製品画像:5位](https://m.media-amazon.com/images/I/51skMJ-OVcL._SL160_.jpg)




