書式・図形の操作
これまでの章では、数値の計算や文字列の転記といった「データそのもの」を扱う処理を中心に学んできました。しかし、Excel業務の実態はデータ処理だけでは完結しません。上司に提出する報告書で見出しに色をつけたり、請求書の所定の位置に社判の画像を貼り付けたり、あるいはフローチャートなどのオートシェイプを調整したりといった「見た目(ビジュアル)」に関わる作業が、実は多くの時間を奪っています。
本記事では、AIを活用してこれらの「書式設定」や「図形操作」を自動化する高度なテクニックを解説します。実はこの分野は、AIにとって「得意・不得意」がはっきりと分かれる領域でもあります。テキストデータしか理解できないAIに対して、どのようにして「右上の図形を少し左にずらして」といった空間的な指示を的確に伝えるか。そのプロンプトエンジニアリングの極意と、生成されたコードを開発者として調整するための視点を12のセクションで体系的に詳述します。
ビジュアル操作の自動化がもたらす「開発者」としての品質向上
Excelにおける「開発者」とは、単に計算が合う表を作るだけの存在ではありません。ユーザー(読み手)にとって視認性が高く、直感的に理解できるアウトプットを提供できて初めて、そのツールは完成したと言えます。しかし、手作業でセルの色を変えたり、罫線を引いたり、図形の位置を微調整する作業は、非常に非生産的でありながら、無視することのできない工程です。
このビジュアル面の調整をVBAマクロで自動化することには、二つの大きな意義があります。一つは「標準化」です。手作業では担当者によって「強調の黄色」の色味が微妙に違ったり、図形の位置が数ピクセルずれたりしますが、マクロであれば常に定義されたRGB値、定義された座標で出力され、資料の品質が均一化されます。もう一つは「動的な表現」です。「売上が目標未達の場合は赤色、達成した場合は青色」といった条件付き書式のような挙動を、より複雑なロジック(例:前年比かつ別シートの係数を考慮して色を決定するなど)で実装できるため、データの意味を瞬時に伝えるダッシュボードのような機能を持たせることが可能になります。
AIを活用することで、これまで「マクロの記録」でしか作れなかったような冗長な書式設定コードを、スマートでメンテナンス性の高いコードとして生成できます。ただし、AIは画面を直接見ているわけではないため、「いい感じに配置して」という曖昧な指示は通用しません。ここで求められるのは、デザインの要件を数値やロジックとして言語化する能力です。本章では、AIと共に「機能」だけでなく「美しさ」も兼ね備えたツールを作り上げるためのアプローチを深掘りしていきます。
セルの書式操作:Interior.ColorとFontプロパティの完全制御
セルの書式設定は、VBAにおいて最も頻繁に使用される機能の一つですが、そのプロパティは多岐にわたります。背景色(Interior.Color)、文字色(Font.Color)、太字(Font.Bold)、フォントサイズ(Font.Size)、そして罫線(Borders)など、一つのセルに対して設定すべき項目は無数にあります。これらをAIに一括で指定させ、整理されたコードを出力させることは、開発効率を劇的に向上させます。
AIへの指示出しにおいて重要なのは、色を曖昧な言葉(「薄い青」など)ではなく、具体的な値や定数で伝えることです。例えば、「背景色を赤にして」と伝えると、AIは vbRed という原色の赤を指定することが多いですが、これは業務資料としては目に痛い色になりがちです。より実務的なコードを得るためには、「背景色はRGB(220, 230, 241)の薄い青色に設定してください」とRGB値で指定するか、「テーマカラーのアクセント1を使用してください」と具体的に指示する必要があります。
また、書式設定の処理は、データ量が増えると処理速度を低下させる主要因となります。セル一つ一つに対して色を変更するコードは非常に低速です。開発者としては、AIに対して「条件に合致するセル範囲(Union)を作成し、最後にまとめて色を変更するコードにしてください」と指示することで、高速化(最適化)を図る視点も必要です。AIはデフォルトではシンプルなループ処理を書く傾向があるため、パフォーマンスを意識したプロンプトを与えることで、プロフェッショナルな品質のコードを引き出すことができます。
条件付き書式のVBA化:Excel機能の限界を超えるロジック実装
Excelには標準機能として「条件付き書式」がありますが、VBAを使ってあえて書式変更を行うべき場面が多々あります。標準の条件付き書式は、設定が増えすぎるとファイル動作が重くなる原因となり、また、複雑な条件(例えば、別ブックのデータを参照して判定するなど)には対応しにくいからです。VBAで実装すれば、データ処理が終わったタイミングで一度だけ色を確定させるため、スクロール時の再計算負荷がなく、動作が軽快になります。
AIにこのような動的な書式設定を依頼する場合、論理構造(If…Then…Else)とプロパティ操作を組み合わせた指示が必要になります。例えば、「D列のステータスが『完了』なら行全体をグレーにし、『保留』なら黄色にしてください。ただし、データ行数は可変なので最終行を自動取得してください」といった具体的なプロンプトです。
さらに、AIが得意とするのは、複数のプロパティを複合的に操作することです。「値がマイナスの場合は、文字色を赤にするだけでなく、太字にして、かつセルの右側に『注意』というコメントを挿入してください」といった、標準機能では不可能な複合アクションも、AIなら数行のコードで実現します。このように、条件判定と視覚効果をセットで自動化することで、ユーザーが「どこに注目すべきか」を誘導する、ユーザビリティの高いツールを構築できます。
図形(Shape)操作の難しさ:AIの「空間認識」能力の限界と対策
セル操作に比べて、図形(オートシェイプやテキストボックス)の操作は、AIにとって難易度が高いタスクです。なぜなら、Excelのシートは2次元の座標平面であり、図形の位置やサイズは「ポイント(Points)」という単位で管理されていますが、AIはテキストベースのモデルであるため、空間的な位置関係を直感的に把握することが苦手だからです。
例えば、「右上に四角形を配置して」と頼んでも、AIにとっての「右上」が具体的にどのセルの位置なのか、あるいはシート全体の右端なのかは曖昧です。その結果、意図しない場所に図形が生成されたり、極端に小さな図形ができたりすることがあります。また、使用するAIモデルによっては、図形操作に関するコード生成を「複雑すぎる」として拒否したり、解説のみに留めたりする傾向も見られます。特に、図形のグループ化や、コネクタによる接続といった高度な操作になると、正確なコードが一発で出力される確率は下がります。
この課題を克服するためには、開発者側が「座標」の概念を持って指示を出す必要があります。「シートの右端から10ポイント、上端から10ポイントの位置」や、「C5セルの左上(Left, Top)に合わせて」といった具合に、基準となるオブジェクトや数値を明示します。AIに対して「見た目」ではなく「数値と基準点」で語りかけること。これが、図形操作マクロを成功させるための最大のコツです。
座標と配置のテクニック:セルを「グリッド」として利用する
図形を配置する際、最も確実で再現性の高い方法は、Excelのセル(Rangeオブジェクト)をグリッド(方眼紙)として利用し、その位置に合わせて図形を制御することです。VBAには、各セルの位置情報(Left, Top)やサイズ(Width, Height)を取得するプロパティがあります。これを利用するようにAIに指示を出します。
プロンプトの例として、「B2セルからD5セルの範囲にぴったり収まるように、四角形のオートシェイプを作成してください」と指示します。するとAIは、Range("B2").Left や Range("B2:D5").Width といったプロパティを参照し、図形の位置とサイズを計算するコードを生成します。これならば、セルの幅や高さが変わっても、図形は常にその範囲に合わせて追従するようになります。
また、複数の図形を整列させる場合も、「図形Aと図形Bの上端(Top)を揃えてください」といった指示が有効です。開発者としては、絶対座標(X=100, Y=200など)で指定するよりも、相対的な関係性(セルの位置や他の図形の位置)で定義する方が、メンテナンス性が高く、画面解像度や環境の違いに強いマクロになることを理解しておくべきです。AIには「セル番地」を共通言語として指示を出すことで、正確なレイアウト制御が可能になります。
画像の挿入と調整:商品台帳や報告書の自動作成
実務で非常にニーズが高いのが、画像を特定のセルに合わせて挿入する処理です。商品リストに商品画像を貼り付けたり、現地調査レポートに写真を貼り付けたりする作業は、手作業で行うと画像のサイズ調整や位置合わせに膨大な時間がかかります。これを自動化することは、業務効率化の大きな成果となります。
この処理をAIに依頼する際のポイントは、「画像の縦横比」と「セルへの収め方」の指示です。単に「画像をセルに合わせて」と言うと、AIは画像の縦横比を無視してセルの形に引き伸ばしてしまうコードを書くことがあります。これを防ぐために、「画像の縦横比を固定したまま(LockAspectRatio = msoTrue)、セルの枠内に収まる最大サイズに縮小・配置してください」と詳細に指示します。
さらに、画像ファイルのパス(保存場所)の指定方法も重要です。「A列に入力されているファイル名(例:img001.jpg)を参照し、指定フォルダから画像を読み込んでB列に貼り付けてください」といった、リスト駆動型の処理を依頼することで、数百件の画像貼り付けを一瞬で終わらせるツールが完成します。また、画像が見つからなかった場合のエラー処理(「画像なし」とテキストを表示するなど)も忘れずに含めるよう指示しましょう。
図形内のテキスト操作:フローチャートや組織図の自動更新
図形そのものだけでなく、図形の中にある「テキスト」を操作することもVBAで可能です。これにより、Excel上のデータを読み取って、組織図のボックス内の氏名を書き換えたり、フローチャートの工程名を更新したりする自動化が可能になります。
AIにこのコードを書かせる際は、図形の特定方法が鍵となります。図形には一つ一つ「名前(Name)」がついていますが、自動生成された名前(例:”Rectangle 1″)は不安定で扱いにくいものです。そのため、「図形の中にあるテキストが『部署名』となっている図形を探し、その内容をA1セルの値に書き換えてください」といった、内容ベースの検索・置換ロジックをAIに提案させるのが有効です。
また、多数の図形を一括処理する場合は、For Each 文を使ってシート上のすべてのShapeオブジェクトをループ処理させるコードが適しています。AIに対して「シート上の全図形をループし、特定の条件に合う図形のテキストだけを変更し、同時に背景色も変更して」と指示すれば、状況に応じて見た目が変わる動的な図解資料を自動生成するシステムを構築できます。
グラフ(Chart)の操作:データの可視化を自動化する
図形操作の延長として、グラフの操作もVBAで自動化できます。毎月の売上データからグラフを作成し、タイトルを「〇月度 売上推移」に変更し、軸の最大値を調整するといった一連の定型作業は、マクロ化に最適です。
グラフ操作のVBAコードは、オブジェクト階層が深く(ChartObject -> Chart -> SeriesCollection…)、人間が手書きするには非常に難解な分野です。しかし、AIはこうした複雑な構文を正確に記憶しているため、人間よりもはるかにスムーズにコードを生成できます。「A列をX軸、B列をY軸として折れ線グラフを作成し、タイトルをC1セルの内容にし、データラベルを表示してください」と具体的な要件を伝えるだけで、即座に動くコードが得られます。
開発者としては、生成されたグラフの位置調整に注意を払う必要があります。グラフも「図形」の一種として扱われるため、前述の「セルに合わせて配置」するテクニックを応用し、所定の報告書枠内にきれいに収まるよう、位置とサイズを制御するコードを追加で指示しましょう。
AIモデルごとの特性理解:ChatGPT、Gemini、Claudeの使い分け
書式や図形操作といった「視覚的」なタスクにおいて、AIモデルごとの得意不得意は顕著に現れます。最近の検証結果や傾向として、ChatGPT(特に有料版モデル)は、標準的でバランスの取れたコードを出力する傾向があり、初心者にとって扱いやすい「優等生」的な回答を返します。エラー処理やコメントも適切に含まれるため、最初に相談する相手として適しています。
一方、Claudeなどのモデルは、コーディング能力が非常に高い反面、初心者には少々複雑すぎる高度な構造(クラスモジュール化や厳密なエラーハンドリングなど)を提案してくることがあります。プロンプトを工夫して「シンプルに書いて」と制約をかける必要があります。
そしてGeminiなどの一部のAIは、図形操作のような複雑なタスクに対して「それは難しい処理です」と回答してコード生成を回避したり、コードではなく操作手順のアドバイスのみを返したりするケースが報告されています。また、文脈維持(前の指示を覚えていること)が苦手な場合もあるため、一度のプロンプトですべての要件(座標、サイズ、色など)を完結に伝える工夫が必要です。開発者は、一つのAIでうまくいかなくても諦めず、別のモデルを試してみる柔軟性を持つことが重要です。
エラーハンドリングとデバッグ:オブジェクトが見つからない問題への対処
図形や画像を操作するマクロで最も頻発するエラーは、「指定した名前の図形が見つからない」というものです。Excelの図形は、ユーザーが誤って削除したり、名前を変更してしまったりすることが容易に起こり得ます。そのため、コード内には必ず存在確認のロジックを組み込む必要があります。
AIに対してコード生成を依頼する際、「指定した図形が存在しない場合でもエラーで止まらず、メッセージを出してスキップするようにしてください」と明示的に指示しましょう。AIは On Error Resume Next を利用した一時的なエラー無視や、図形コレクションをループして名前をチェックする関数などを実装してくれます。
また、結合セルや非表示行が含まれる範囲で図形操作を行うと、座標計算が狂うことがあります。開発者は、テスト段階で様々なパターンのシート(行の削除、セルの結合など)を用意し、AIが生成したコードがどのような環境でも堅牢に動作するかを検証する責任があります。エラーが出た場合は、その状況(「結合セル上で実行したらずれた」など)を具体的にAIに伝え、修正案を提示させましょう。
実践的シナリオ:電子印鑑(ハンコ)自動捺印ツールの作成
ここまでの知識を統合した実践的な演習として、「承認ボタンを押すと、承認者の電子印鑑画像が所定の枠内に自動的に挿入され、日付が入る」というツールを作成してみましょう。これは多くの日本企業で求められる典型的な図形操作マクロです。
プロンプトの構成案:
1. 入力: 「承認」ボタンがクリックされたことをトリガーとする。
2. 処理: あらかじめ用意された「印鑑画像(pngファイル)」を読み込む。
3. 配置: 「承認欄」と名前がついたセル(またはB10セルなど)の中央に配置する。
4. 調整: 画像のサイズをセルより少し小さめに調整する。
5. テキスト追加: 画像の上に、今日の日付をテキストボックスで重ねて配置する。
6. 保護: 捺印後はシートを保護し、変更できないようにする。
このようなシナリオをAIに与えると、画像の挿入(Pictures.InsertまたはShapes.AddPicture)、位置計算、テキストボックスの追加といった複数の要素技術が組み合わさったコードが生成されます。これを微調整しながら完成させるプロセスを通じて、図形操作の勘所を養うことができます。
結論:感性をロジックに変換するスキル
書式設定や図形操作の自動化は、単なる時短テクニックではありません。それは、資料作成における「感性」や「美意識」の領域を、再現可能な「ロジック」へと変換する高度な知的作業です。AIはこの変換プロセスを強力にサポートしてくれますが、最終的に「何が美しいか」「何が見やすいか」を定義するのは開発者であるあなた自身です。
「値を計算する」だけのマクロから、「見やすく整形し、図解し、訴求力のある資料を完成させる」マクロへ。AIを使いこなし、ビジュアル操作までを支配下に置くことで、あなたの開発するツールは、使う人に感動を与えるレベルへと昇華します。次では、こうして作成したマクロの品質をさらに高めるためのテスト手法や、運用のためのドキュメント作成について学んでいきます。自動化の総仕上げに向けて、さらにスキルを磨いていきましょう。
