はじめに
Excelを使っていると、シートが大量にあるブックに出会うことがあります。
シートが数枚なら何も困らないのですが、数十枚になってくると話が変わります。
目的のシートを探すためにタブを左右にスクロールしたり、シートを並び替えたり……。
Excelにはシート一覧を表示する機能もありますが、個人的にはもう少し使いやすくできそうだなと思っていました。
「エクスプローラーみたいに、シートを縦に並べて操作できたら便利じゃない?」
ということで、Excelのシートを縦型で管理するアドインを作ってみました。
名前は Sheaside(シーサイド) です。
今回は、作ったものの紹介と、開発中にあれこれ試したことを記録しておこうと思います。
1. 作ったもの
Sheasideは、Excelの右側にシート一覧を表示して、そこからシートを操作できるVSTOアドインです。
完成画面
通常のExcelでは画面下部に横並びになっているシートタブを、右側のタスクペインに縦方向で表示します。
縦型なのでシート数が多くても見渡しやすく、シート名の確認もしやすくなりました。
もちろん、ただ表示するだけではありません。
一覧からシートをクリックして切り替えたり、ドラッグで順番を変更したり、右クリックから各種操作を実行したりできます。
主な機能
| 機能 | 内容 |
|---|---|
| シート一覧 | 右側に縦型一覧を表示 |
| シート切り替え | クリック・Enterで切り替え |
| 名前検索 | シート名の部分一致検索 |
| 並び替え | ドラッグ&ドロップ |
| 複数選択 | Ctrl・Shiftによる選択 |
| シート管理 | 追加・削除・複製・名前変更 |
| 表示管理 | Hidden・VeryHiddenに対応 |
| タブ色 | テーマ色やRGBで変更 |
| 一括操作 | 複数シートをまとめて操作 |
| グラフシート | 通常のワークシート以外にも対応 |
最初は一覧表示と切り替えができれば十分かなと思っていました。
でも、一覧ができたら並び替えたくなり、並び替えができたら複数選択したくなり……。
気づけば、ずいぶん機能が増えていました。
2. 開発環境
今回使用した技術はこんな感じです。
| 項目 | 技術 |
|---|---|
| 開発言語 | C# |
| フレームワーク | .NET Framework 4.8 |
| アドイン方式 | VSTO |
| Excel操作 | Excel Interop |
| UI | Windows Forms |
| IDE | Visual Studio 2026 Community |
| AI開発支援 | ChatGPT・Codex |
| バージョン管理 | Git・GitHub |
なぜVSTO?
Excelの拡張方法はいくつかありますが、今回はExcelのシートを直接操作したかったので、VSTOを使いました。
VSTOならExcelのCOMオブジェクトモデルにアクセスできるので、シートの追加・削除・並び替えなどを実装できます。
また、Custom Task Paneを使えば、Excelの横に独自のUIを表示できます。
Windows版Excel限定にはなりますが、今回作りたいものにはちょうどよさそうでした。
3. こんな機能を実装してみた
3.1 縦型シート一覧
一番の目的だった機能です。
Excelで開いているブックのシートを一覧に表示し、クリックすると対象シートへ切り替わります。
逆に、Excel標準のシートタブから切り替えた場合も、Sheaside側へ反映されます。
一覧にはシートの種類や表示状態、保護状態などもアイコンで表示しています。
また、名前が長い場合は省略し、マウスを合わせるとツールチップで全文を確認できます。
3.2 ドラッグ&ドロップ
一覧上のシートをドラッグして、好きな位置へ移動できます。
先頭・末尾への移動や、ドラッグ中の自動スクロールにも対応しました。
さらに、複数のシートをまとめてドラッグすることもできます。
これが意外と複雑で、複数選択したシートの元の順序を維持したり、検索で一部のシートが非表示になっている場合の移動先を考えたりする必要がありました。
見た目は単純なドラッグ操作ですが、中身はいろいろ考えることがありました。
3.3 複数選択
エクスプローラーと似た感覚で使えるように、CtrlやShiftによる選択にも対応しました。
- Ctrl+クリック:選択の追加・解除
- Shift+クリック:範囲選択
- Ctrl+Shift+クリック:範囲を追加
- Ctrl+A:表示中のシートを全選択
- Esc:アクティブ行へ選択を戻す
ここで少し面倒だったのが、ExcelのアクティブシートとSheasideの選択状態です。
Excelで現在表示しているシートと、Sheasideで操作対象として選択しているシートは、必ずしも同じではありません。
そのため、それぞれの状態を分けて管理しています。
また、同じブックを複数ウィンドウで開いた場合でも、選択状態が混ざらないようにしました。
3.4 一括操作
複数選択に対応したので、まとめて操作する機能も追加しました。
例えば、複数のシートを選択して、一括で非表示にしたり、タブ色を変更したりできます。
削除・複製・再表示などにも対応しています。
最初は一括操作用のメニューを別に用意していましたが、使ってみるとメニューが少し煩雑でした。
そこで、単一操作と複数操作を同じ右クリックメニューから実行できるように変更しました。
確認ダイアログについても見直しています。
何でもかんでも確認すると操作が面倒になるので、通常の管理操作では確認を省き、取り消せない削除だけ事前確認する形にしました。
こういう細かな操作感は、実際に触りながら調整していきました。
4. 開発中に苦労したこと
4.1 Worksheetだけでは足りなかった
Excelのシートというと、普通はWorksheetを思い浮かべます。
ただ、Excelには独立したグラフシートも存在します。
Worksheetsだけではグラフシートを含めた一覧を作れないため、Sheetsを使い、WorksheetとChartの両方を扱うようにしました。
シート管理という単純そうな機能でも、内部では種類ごとの違いを考慮する必要がありました。
4.2 非表示シートの複製が思いどおりにいかない
今回、特に面白かった問題のひとつです。
Excel 2013で確認したところ、非表示シートを複製した際に、コピー先が期待した位置へ挿入されないケースがありました。
また、VeryHiddenのシートを直接コピーしようとすると、Excel側に拒否されるケースもありました。
そこで、複製前後のシートIDを比較して新しく作られたシートを特定し、必要なら正しい位置へ移動するようにしました。
VeryHiddenの場合は、一時的に表示状態を変更して複製し、最後に元の状態へ戻す処理も入れています。
もちろん、途中で問題が起きた場合にも、元の状態へ戻すようにしています。
こういうExcel特有の挙動は、実際に試してみないと分からない部分でした。
4.3 最後の表示シートは消せない
Excelでは、すべてのシートを非表示にすることはできません。
最低1枚は表示されている必要があります。
そのため、一括削除や一括非表示では、操作後にも表示シートが残るかを確認しています。
また、ブックの構成保護や読み取り専用など、操作できない状態もあります。
Sheasideでは、操作前だけでなく、実行直前にも対象の存在や状態を確認しています。
一括操作の途中で失敗した場合は、そこで処理を中断するようにしました。
Excelの操作にはデータベースのトランザクションのような一括ロールバックがないので、安全性には気を使う必要がありました。
4.4 UIも意外と手間がかかった
機能を作ることに加えて、見た目や操作性の調整にも結構時間を使いました。
例えば、
- タブ色を四角い表示から細い縦バーへ変更
- シート名が長い場合の省略表示
- Hidden・VeryHidden・保護状態のアイコン整理
- カラーパレットの表示崩れ修正
- 検索欄を上部へ移動して一覧の表示領域を拡大
- Officeのテーマや高コントラスト表示への対応
などです。
作り始めたときには気にならなかったことも、実際に使っているとだんだん気になってくるものですね。
5. ChatGPTとCodexを使って開発
今回の開発では、ChatGPTとCodexをかなり活用しました。
ざっくり役割を分けると、
ChatGPT:何を作るか、どう動かすかを相談
Codex:実装・修正・テストを進める
自分:仕様の判断と、実際に動かして確認する
という感じです。
例えば、新しい機能を追加するときは、まずChatGPTと相談して仕様を考えます。
その内容をCodexに渡して実装してもらい、Visual StudioでビルドしてExcelで動かしてみます。
実際に使ってみて気になる部分があれば、また修正してもらいます。
そんな流れを何度も繰り返していました。
バージョンごとの開発
| バージョン | 主な内容 |
|---|---|
| v0.1〜v0.3 | 一覧表示・シート切り替え・並び替え |
| v0.4 | 非表示・タブ色管理 |
| v0.4.1 | グラフシート対応 |
| v0.5〜v0.5.1 | 複数選択 |
| v0.6 | 一括管理機能 |
| v1.0.0 | UI整理・検索・複数ドラッグ・配布対応などを経て正式リリース |
開発初期は機能を細かく区切っていましたが、途中からは関連機能をまとめて実装することも増えました。
ただし、実装が終わっても実際の操作感までは分かりません。
使ってみると「ここはもうちょっとこうしたい」という部分が出てくるので、そのたびに調整していました。
AIにコードを作ってもらいながら、自分の欲しいツールに近づけていく作業はなかなか面白かったです。
6. テストについて
Codexには、実装だけでなく自動テストの作成もお願いしました。
開発が進むと、ある機能の修正が別の機能に影響する可能性があります。
特に今回は、Excelのシート操作や選択状態の管理がいろいろな機能で共通しているため、回帰テストも用意しました。
v1.0.0の正式リリースに向けて、リリース候補版(RC5)では以下のテストを実施しました。
- 管理系テスト:430チェック成功
- Excel 2013連携を含むテスト:600チェック成功(管理系を含む)
- Debug・Releaseビルド:警告0・エラー0
その後、正式版v1.0.0としてリリースしました。
さらに、Excel 2013の実VSTOホスト上でUIの確認も実施しています。
もちろん、これですべての動作が保証されるわけではありません。
特にMicrosoft 365での動作や、実際のマウス操作、インストール・更新などは、実機での確認が必要でした。
自動テストと実機確認の両方を使いながら、少しずつ仕上げていきました。
7. GitHub
今回作成したSheasideは、GitHubでソースコードを公開しています。
GitHub:nyo-ro/Sheaside
また、v1.0.0の正式版をリリースしました。
ダウンロード:Sheaside v1.0.0
個人的に使いたくて作ったものですが、興味のある方は自由にご覧ください。
導入する場合は、READMEに記載している動作環境やインストール手順を確認してください。
なお、Windows版Excel向けのVSTOアドインなので、Mac版・Web版Excelには対応していません。
8. まとめ
今回は、Excelのシートを縦型で管理するVSTOアドイン「Sheaside」を作ってみました。
最初はシートを縦に並べたいというだけの思いつきでしたが、気づけばドラッグ&ドロップや複数選択、一括操作まで実装することになりました。
開発にはChatGPTとCodexをかなり活用していて、仕様を相談したり、コードを書いてもらったり、実際に動かして修正したりと、いろいろ試しながら進めました。
思いつきで始めた割には、なかなか面白いものができたんじゃないかなと思います。
また何か思いついたら、チャッピーと遊びながら作ってみたいですね。



