Office ScriptsでExcelグラフ作成を自動化!軸・凡例・タイトルの設定方法を初心者向けに解説
生徒
「仕事で毎日、Excelのデータからグラフを作っているんですけど、これをOffice Scripts(オフィススクリプト)で自動化することってできますか?」
先生
「もちろんですよ!Office Scriptsを使えば、ボタンひとつでグラフを作って、さらにタイトルや軸のラベル、凡例(はんれい)まで自動で整えることができるんです。」
生徒
「グラフの見た目を整えるのって、マウスでポチポチ操作するのが意外と面倒なんですよね。プログラミングの知識がなくても大丈夫でしょうか?」
先生
「大丈夫です。基本のコードの書き方さえ覚えれば、あとはコピーして少し変えるだけで応用できます。今回は、グラフ生成の基礎から、見やすいグラフに仕上げるための設定まで、丁寧に解説していきますね!」
1. Office Scriptsとは?Excel自動化の新しい形
Office Scripts(オフィススクリプト)は、Microsoft ExcelのWeb版やデスクトップ版で利用できる、作業を自動化するための強力なツールです。これまでExcelの自動化といえば「VBA(マクロ)」が主流でしたが、Office Scriptsはより現代的で、GoogleスプレッドシートのGAS(Google Apps Script)に近い感覚で利用できるのが特徴です。
大きな特徴は、TypeScript(タイプスクリプト)というプログラミング言語を採用している点です。「プログラミング言語」と聞くと身構えてしまうかもしれませんが、安心してください。Office Scriptsには「操作を記録する」という機能があり、自分が行ったマウス操作を自動的にプログラムのコードに変換してくれる仕組みがあります。まずはこれを使って、どのようなコードが書かれているのかを眺めることからスタートすれば、未経験の方でもスムーズに学習を始められます。
特に、大量のデータをグラフ化して定期的にレポートを作成するような業務において、Office Scriptsは真価を発揮します。手作業でグラフのタイトルを入力したり、色の設定を変えたりする時間は、積み重なれば大きなロスになります。これを自動化することで、正確かつスピーディーに業務を終わらせることができるようになります。
2. グラフ自動化の第一歩!基本のグラフ作成コード
まずは、Excelシート上にあるデータを使って、単純なグラフを作成するコードを見てみましょう。プログラミングにおいて、何かを作る命令を出すときは、対象が「どこにあるか」を指定する必要があります。Excelの場合は「ワークブック(ファイル全体)」の中の「ワークシート(個別のシート)」の中の「レンジ(セル範囲)」という順番で指定していきます。
例えるなら、大きな図書館(ワークブック)の、特定の棚(ワークシート)の、何段目にある本(セル範囲)を取り出す、といったイメージです。以下のコードは、A1からB5の範囲にあるデータを使って、基本的な棒グラフを作成するものです。
function main(workbook: ExcelScript.Workbook) {
// 1. 現在開いているシートを取得する
const selectedSheet = workbook.getActiveWorksheet();
// 2. グラフの元となるデータ範囲(A1からB5)を指定する
const dataRange = selectedSheet.getRange("A1:B5");
// 3. 棒グラフ(ColumnClustered)を追加する
const newChart = selectedSheet.addChart(ExcelScript.ChartType.columnClustered, dataRange);
}
このコードの中にある addChart という言葉が「グラフを追加してね」という命令です。括弧の中にある columnClustered は、グラフの種類(この場合は集合棒グラフ)を指定しています。これだけで、Excelのシート上に新しいグラフがポンと現れます。
3. グラフのタイトルを自動で設定する方法
グラフを作成しただけでは、タイトルが「グラフのタイトル」といった味気ないものになってしまいます。これを、Office Scriptsを使って適切な名前に変更しましょう。プログラミングでは、作ったグラフに対して「あなたの名前はこれですよ」と教えてあげる作業が必要です。
タイトルを設定するには、グラフオブジェクト(プログラムの中でのグラフの呼び名)の getTitle という機能を使います。さらにその中の setText という命令で、好きな文字をセットします。これは、箱の中に新しいラベルを貼り替えるような作業だと考えてください。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
// 既に作成されている最初のグラフを取得
const chart = sheet.getCharts()[0];
// グラフのタイトルを設定する
chart.getTitle().setText("2024年度 売上推移レポート");
// タイトルのフォント(文字の見た目)を太字にする
chart.getTitle().getFormat().getFont().setBold(true);
}
上記のコードでは、まず getCharts()[0] という書き方で、シート内にある「1番目のグラフ」を選んでいます(プログラムの世界では、1番目を「0」と数えるルールがあります)。その後、setText でタイトルを決定し、さらに setBold(true) で文字を太字にしています。これにより、一目で何を表すグラフなのかが伝わるようになります。
4. 軸のラベル(横軸・縦軸)をカスタマイズする
グラフにおいて、縦軸が「金額」なのか「個数」なのか、横軸が「月」なのか「支店名」なのかを明示することは非常に重要です。これらを設定するのが「軸(じく)」の設定です。Excelグラフには、通常、横方向の「項目軸」と縦方向の「数値軸」があります。
Office Scriptsでは、getAxes(軸を取得する)という命令を使い、その後に getCategoryAxis(横軸)や getValueAxis(縦軸)を繋げて指定します。少し言葉が難しく感じるかもしれませんが、「横の棒を掴む」「縦の棒を掴む」というイメージで捉えてください。以下のコードでは、それぞれの軸に名前を付けています。
function main(workbook: ExcelScript.Workbook) {
const chart = workbook.getActiveWorksheet().getCharts()[0];
// 横軸(カテゴリー軸)の取得とタイトルの設定
const categoryAxis = chart.getAxes().getCategoryAxis();
categoryAxis.getTitle().setVisible(true); // タイトルを表示するように設定
categoryAxis.getTitle().setText("月度");
// 縦軸(数値軸)の取得とタイトルの設定
const valueAxis = chart.getAxes().getValueAxis();
valueAxis.getTitle().setVisible(true);
valueAxis.getTitle().setText("売上金額(万円)");
}
ここで重要なのが setVisible(true) という命令です。Excelの初期設定では、軸のタイトルが隠れている(非表示)ことが多いので、まずは「見えるようにして(true)」と指示を出してから、文字を入力する必要があるのです。
5. 凡例(はんれい)の表示位置を自在に操る
「凡例(はんれい)」とは、グラフの中で「青い棒はA社、赤い棒はB社」といった具合に、データの色が何を意味しているかを説明するガイドのことです。凡例の場所が悪いと、メインのグラフが小さくなってしまったり、見づらくなってしまったりします。Office Scriptsでは、凡例の位置を「上・下・左・右」などに一瞬で移動させることができます。
位置を指定するには、ChartLegendPosition という設定値を使います。これを変えるだけで、マウスでドラッグする手間が省けます。
function main(workbook: ExcelScript.Workbook) {
const chart = workbook.getActiveWorksheet().getCharts()[0];
// 凡例を取得する
const legend = chart.getLegend();
// 凡例を表示状態にする
legend.setVisible(true);
// 凡例の位置を「右側」から「下」に変更する
legend.setPosition(ExcelScript.ChartLegendPosition.bottom);
}
実行結果は以下のようになります。
(グラフの凡例がグラフエリアの下部に配置されました)
このように、コードを一行書くだけで、グラフ全体のレイアウトがスッキリと整います。特にデータの種類が多い場合は、凡例を下に配置することで、横幅いっぱいにグラフを表示できるようになり、視認性が向上します。
6. グラフの種類を後から変更する「編集」のテクニック
一度作ったグラフを、「やっぱり折れ線グラフの方がよかったかな?」と変更したくなることはよくあります。Office Scriptsでは、グラフを一度消して作り直す必要はありません。既存のグラフに対して「種類を変更して」と命令するだけで済みます。
種類を変更するには setType という命令を使います。例えば、棒グラフから折れ線グラフに変えることで、データの推移(時間の経過とともにどう変化したか)を強調できるようになります。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const chart = sheet.getCharts()[0];
// グラフの種類を「折れ線(Line)」に変更する
chart.setType(ExcelScript.ChartType.line);
}
このように、グラフの型式(ChartType)を入れ替えるだけで、中身のデータはそのままに見た目だけを一瞬でスイッチできます。これは「編集」作業を自動化する上で非常に便利なテクニックです。たとえば、速報値は棒グラフで、確定値は折れ線グラフで、といった使い分けもプログラムで制御可能です。
7. 実践!全ての要素を盛り込んだ「完成版」スクリプト
これまでに学んだ「作成」「タイトル設定」「軸設定」「凡例設定」をすべて組み合わせた、実用的なプログラムを作成してみましょう。このコードを実行するだけで、真っさらな状態から完璧に整ったグラフが完成します。
プログラミング未経験の方は、まずこのコードをコピーして、Excel Onlineの「自動化」タブにある「新しいスクリプト」に貼り付けて実行してみてください。実際にグラフが動く様子を見るのが、一番の学習の近道です。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
// データ範囲(A1:B13など、1年分のデータを想定)
const dataRange = sheet.getRange("A1:B13");
// 1. グラフを追加(折れ線グラフ)
const chart = sheet.addChart(ExcelScript.ChartType.line, dataRange);
// 2. タイトルを一括設定
chart.getTitle().setText("月別売上推移(自動生成)");
chart.getTitle().getFormat().getFont().setColor("Blue"); // 色を青に変更
// 3. 軸の設定
const xAxis = chart.getAxes().getCategoryAxis();
xAxis.getTitle().setVisible(true);
xAxis.getTitle().setText("月");
const yAxis = chart.getAxes().getValueAxis();
yAxis.getTitle().setVisible(true);
yAxis.getTitle().setText("売上(円)");
// 4. 凡例を上に配置
chart.getLegend().setVisible(true);
chart.getLegend().setPosition(ExcelScript.ChartLegendPosition.top);
// 5. グラフの大きさを調整(見た目を整える)
chart.setPosition("D1", "L20"); // D1セルからL20セルの範囲に配置
}
実行結果として、Excelの画面上に指定した通りのデザインのグラフが表示されます。コードの中の "D1", "L20" という部分は、グラフを表示する場所を指定しています。これを変えることで、データの隣にちょうどいいサイズでグラフを並べることができます。
8. 専門用語の解説とトラブルシューティング
ここで、記事の中で出てきた少し難しい用語をおさらいしておきましょう。これらを理解しておくと、自分でコードを調べるときに非常に役立ちます。
- オブジェクト (Object): プログラムで操作する「モノ」のことです。Excel Scriptでは、ブック、シート、セル、グラフ、それぞれが「オブジェクト」として扱われます。
- メソッド (Method): オブジェクトに対する「命令」のことです。
setText(文字をセットせよ)やaddChart(グラフを追加せよ)などがこれに当たります。 - プロパティ (Property): オブジェクトの「状態」や「属性」のことです。例えば、フォントが太字かどうか、背景が何色か、といった情報の集まりです。
- true / false: プログラミングでよく使われる値で、
trueは「はい(有効)」、falseは「いいえ(無効)」を意味します。setVisible(true)ならば「表示を有効にする」という意味になります。
もしコードを実行してエラーが出た場合は、まず「データ範囲が正しいか(セルにデータが入っているか)」や「グラフが既に存在しているか」を確認してください。Office Scriptsは非常に素直なので、指示が少しでもズレていると「見つかりません」と教えてくれます。エラーメッセージを読み解くのも、上達への大切な一歩です。
9. Office Scriptsを学ぶメリットと今後の活用
Excelの操作を自動化できるようになると、あなたの働き方は劇的に変わります。これまでグラフ作成に費やしていた10分、20分の時間が、ボタン一つで「0秒」になるからです。空いた時間で、グラフが示すデータの意味を分析したり、次の戦略を練ったりといった、人間にしかできない高度な仕事に集中できるようになります。
また、Office Scriptsはクラウド(Web)上で動作するため、チームメンバーとスクリプトを共有するのも簡単です。あなたが作った「完璧なグラフ作成スクリプト」を部署全体で使えば、チーム全体の生産性を底上げすることも可能です。最初は小さな一歩かもしれませんが、この積み重ねが大きなスキルアップに繋がります。
まずは、今回ご紹介したタイトルの設定や軸のカスタマイズから始めて、少しずつ自分流の便利なツールを作ってみてください。Excel自動化の道は、ここから始まります!
まとめ
今回の記事では、Office Scripts(オフィススクリプト)を活用して、Excelのグラフ作成を効率化・自動化する方法について詳しく解説してきました。Excelの業務において、グラフの作成はデータの可視化に欠かせないステップですが、手動で行うと軸の設定やタイトルの入力、凡例の配置など、細かな調整に意外と時間が取られてしまうものです。Office Scriptsを導入することで、これらの定型作業を瞬時に終わらせ、常に一定のクオリティでレポートを作成することが可能になります。
Office Scriptsによるグラフ自動化の重要ポイント
Office Scriptsでグラフを制御する際に覚えておくべき核となる要素を改めて整理します。まず、グラフを作成するためには addChart メソッドを使用し、データ範囲とグラフの種類を正確に指定することが出発点です。その後、生成されたグラフオブジェクトに対して、タイトル(getTitle)、軸(getAxes)、凡例(getLegend)といった各プロパティにアクセスし、メソッドを繋げて設定を変更していくのが基本の流れとなります。
特に、ビジネス資料として通用するグラフにするためには、以下の設定が欠かせません。
- タイトルの明示: 何のデータであるかを一目で伝えるために、フォントサイズや太字設定を組み合わせる。
- 軸ラベルの表示:
setVisible(true)を忘れるとラベルが表示されないため注意が必要。 - 適切な配置:
setPositionを使って、シート上のデータと重ならない最適な位置にグラフを配置する。
VBAとの違いと移行のメリット
長年Excelマクロ(VBA)を利用してきた方にとって、Office Scriptsへの移行は「難しそう」と感じるかもしれません。しかし、Office ScriptsはTypeScriptベースであり、Web版Excelでも動作するという強力なメリットがあります。VBAでグラフを操作する場合と比較して、Office Scriptsはモダンな記述が可能であり、将来的にPower Automateとの連携を通じて「メールで届いたデータを自動でグラフ化し、Teamsに投稿する」といった高度な自動化への拡張性も備えています。
参考までに、従来のVBAで同様のグラフ作成を行う場合のコード例を以下に示します。Office Scriptsのコードと比較して、構造の違いを確認してみましょう。
Sub CreateChartVBA()
Dim ws As Worksheet
Set ws = ActiveSheet
' グラフの作成
Dim chartObj As ChartObject
Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=375, Top:=50, Height:=225)
With chartObj.Chart
' データのセット
.SetSourceData Source:=ws.Range("A1:B5")
' グラフ種類の指定
.ChartType = xlColumnClustered
' タイトルの表示と設定
.HasTitle = True
.ChartTitle.Text = "売上データ(VBA作成)"
End With
End Sub
VBAも非常に強力ですが、Office Scriptsはより「どの要素に対して、何をするか」が直感的な英語のメソッドチェーン(ドットでつなぐ書き方)で構成されています。Web時代の自動化ツールとして、Office Scriptsを習得することは、エンジニアのみならず一般の事務職の方にとっても非常に価値のあるスキルとなるでしょう。
さらなるステップアップに向けて
基本の形を覚えたら、次は「条件に応じた色の変更」や「複数のグラフの一括生成」など、より複雑なロジックに挑戦してみてください。プログラムのコードは一からすべて書く必要はありません。まずは既存のコードをテンプレートとして使い、"A1:B5" という範囲を自分のデータに合わせて書き換えることから始めれば十分です。
毎日のルーチンワークから解放され、よりクリエイティブな分析業務に時間を割くために、ぜひ今日からOffice Scriptsのグラフ自動化を取り入れてみてください。
生徒
「先生、ありがとうございました!Office Scriptsでグラフのタイトルや軸まで自動で設定できるなんて驚きです。今まではグラフを一つ作るたびに、右クリックして設定を開いて…と繰り返していたのが嘘みたいに楽になりそうです。」
先生
「そう言ってもらえると嬉しいです。特に setVisible(true) の部分は、初心者の方がよく『コードを書いたのに軸の名前が出てこない!』とつまずくポイントなので、そこをしっかり押さえられたのは大きいですね。」
生徒
「はい、最初は getAxes().getCategoryAxis() みたいな長い命令にびっくりしましたけど、『横軸を捕まえる!』というイメージで考えるとスッと理解できました。あと、最後に紹介してくれた完成版のコードにある setPosition も便利ですね。グラフがデータの上に被さっちゃうのが悩みだったので。」
先生
「その通りです。プログラムの良いところは、一度『完璧な配置』を決めてしまえば、次からは二度と微調整しなくて済む点にあります。ところで、VBAのコードとの違いはどう感じましたか?」
生徒
「VBAは With 文とかを使っていて少し独特な感じがしますが、Office Scripts(TypeScript)の方が、最近のプログラミング言語っぽくて、他のWeb系の勉強にも役立ちそうだなって感じました!」
先生
「素晴らしい視点ですね!Office Scriptsで身につけた知識は、他のアプリケーションの自動化にも必ず活きてきます。まずは小さなスクリプトからコツコツと増やしていきましょう。次はデータの抽出と組み合わせた、より高度な自動レポート作成に挑戦してみましょうか?」
生徒
「ぜひお願いします!もっと楽をして、仕事の質を上げていきたいです!」