30
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Excelのタブを縦表示するVSTOアドイン

Posted at

この記事はなにがしかのアドベントカレンダーに投稿するつもりだったものです。

VTab.gif
このようなものを作って自分で利用しています。

なぜ作ったのか

シート数がそれなりに多いエクセルを利用していると「シートタブの視認性・検索性が著しく悪い」という悩みがあった為お勉強も兼ねて解決できないかと思いたちました。
同僚が同様のぼやきをしていたような気もします。

結果どうだったのか

極端に言うとタブを縦に並べた+インクリメンタルサーチをつけただけなのですが結構便利です。
公式で実装してほしいくらい。
社内では私以外にも使いたいという人が現れました。

機能

  • ワークシートのタブを縦に並べたカスタムタスクペイン上でワークシートの選択
  • シート名でのインクリメンタルサーチ
  • ドラッグドロップでのシート順入れ替え

実装について

ソースコードはこちらになります。
https://github.com/nk9k/ExcelVerticalTab

リスト部分

WPFで作ったユーザーコントロールをVSTOでホストしています。
ListBoxItemのスタイルをTabItem風にしてタブ感を演出しました。
ドラッグアンドドロップについては以下の記事を参考にさせていただきました。
WPFでListBoxアイテムのドラッグ&ドロップを実装する。
ListBoxのアイテムを半透明ゴーストつきドラッグアンドドロップで並べ替える
VTab2.gif

名称変更と通常タブのシート順変更に追従する

VSTOで提供されているオブジェクトモデル上ではシートの名称変更や並び順変更を検知するイベントが存在しません。
どうしたものかと悩んでいたところ親切な先生がサクッとWindowMessageをハンドルするコードを書いてプレゼントしてくれたので助かりました。
感謝っ・・・・!圧倒的感謝っ・・・・!
AirSpace::Notification っていうのを引っ捕らえるといいらしいです。

公開は?

社内ではクリックワンスで配布しているのですが一般向けに配布するにはどういう手段をとればいいのかよくわかっていない為需要がありそうなら本腰入れて調べないとなぁと思っています。つまりバイナリは未公開です。
ビルドできる人はソースコードフォークしてもらえれば早いんですが…

締め

そんなこんなで今年も残りあと僅かとなりました。
1年間いろんな方にお世話になりました。ありがとうございました。
次の1年もまたよろしくお願いします。
皆様よいお年を。

30
28
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?