むかしOffice95には。

bloassist Internet Assistantというアドオンプログラムが存在した
 つーか今でもパワポ95用は公開されているようだ。すげ。
 その後Officeはどんどんウェブ関係の機能を内包するようになって、いまじゃ自前のエクスポートどころか機能互換のままXMLとして保存できるようになっている。
 しかしOfficeの吐くHTML/XMLは正直扱いづらい。昔は「汚い」とストレートに貶めていたけど、最近のCMSやブログツールが吐くソースも(たとえ文法的には正しくったって)十分に扱いづらいわけで、そのへんと一緒くたにしてお近づきになりたくない。
 かといって表データの作成においてはスプレッドシートほど楽なアプリもないわけで、なんとかお気軽に作成できないかという思いはこの10年多くの人が形にしてきている。
 さて。
 最近必要以上にVBAとの接点が増えたこともあり、いっちょマクロでやってみっかと思い立ったのが確か二週間ほど前の話。他のマクロとも並行しながらシコシコと作業をすすめてきたが、おおむね形になったっぽいのでひとまずの御報告。
 ちなみにアウトプットに関しては前の日記(のソース)が参考になろうかと。


 とはいえ、ここの閲覧者層を考えるとコードを貼ってふむふむと参考になさるような方は多くなかろ。むしろメインは「使えるものなら使わせてみー」という手合いであろうから、とっとと「導入手順と成果」を示してしまうべし。
 むろん導入にあたっては一切の責任を放棄させていただく。楽ってことはハイリスクってことですよ多分。ちなみに動作チェックは Excel2000/2002(XP)でしか取ってない。メニュー構成の異なるExcel97以前では多分動かないと思う。Office:macに至ってはもうサパーリ。
 いろいろ勝手に弄ってもらえるように、アドインにはロックを掛けてない。だからVBEが使える人はAlt F11でチープなコードを見て笑っておくれ。ロックしてないのは内部マクロの初期設定をカスタマイズしていただくためだが、もちろん適宜修正してもらったり更なるグゥレイトなバージョンの元ネタにしていただくのも結構。これまでの例からして、わたし自身によるブラッシュアップの可能性は極端に低いし。

1. アドインファイルの設置

 アドインの書庫ファイルをダウンロードし、解凍してできた Blogassist.xla ファイルをエクセルのアドインフォルダにコピーする。実はアドインフォルダ以外でもフォルダ参照で読みに行けるから問題ないのだが、ファイルが散逸するのもアレなので適当な場所に固めておくのがよろしかろう。Office セットアップフォルダ配下の Library フォルダであれば、Excel を起動した段階で(後述の)アドインリストに表示されるはず。
アドインフォルダにコピー
 XP SP2の時代になっても画面はクラシックWindowsでTicago95フォントですよ。もう仕方がない。

2. アドインの登録

 Excel を起動。上記のアドインフォルダに保存したなら、〔ツール(T)→アドイン(I)...〕で表示される「有効なアドイン」リストに Blogassist の名前が表示されているはず。されていない場合は Blogassist.xla を保存したフォルダを参照のこと。
アドインの登録
 チェックマークを付けて「OK」をクリックすると、ツールメニューの最下段に〔TABLE としてコピー(L)〕というメニューが追加されるはず。きっと。

3. データ入力と書式の設定

 ようやく機能の説明。
 このマクロ(アドイン)は、基本的に「セルを矩形選択して実行すると HTML ソースがクリップボードにコピーされる」という機能を実装するわけだが、最低限追加しておきたい機能がふたつあった。
 ひとつは結合セル。HTML でいうところの COLSPANROWSPAN である。セル結合が容易である Excel で編集するのだからこそ、当然実装されてしかるべき機能だろう。むしろ「エディタなどでは面倒な」この作業を自動化するのが今回の主な目的と言っていい。
 もうひとつは書式の反映。具体的にはセルの背景色などを CSS の CLASS 名で持っておきたい、さらに表の見出しもある程度は自動で設定したい。その辺を初期設定として持っておきたい。
Excelのスタイル設定
 結合セルについては縦横どちらも実装できてるはず。見出しは行だけ標準で有効にしてあるが、これを例えば初期設定ダイアログから指定できるようにするのは今後の課題。といいつつ自分でつかう分にはもう困らないわけで、実装に関してはかなり見通し暗い。
 CSS 対応は Excel が標準で持っているスタイル機能を使う。コピーした HTML をつかう先で有効になっている CLASS 名と同じ名前でスタイルを作成すれば、それを読み取って HTML に埋めるという単純な仕組み。だからExcel側で設定した網掛けや罫線といった個別の書式が反映されるわけではないので注意。そのへんは貼り付け先のスタイルシートでシコシコやるように。

4. アドイン機能の実行

 データの入力、スタイルを使った書式設定、セル結合など必要に応じた作業を終えたら、コピーしたい範囲を選択して〔ツール(T)→TABLE としてコピー(L)〕を実行。
ツール→TABLE としてコピー
 これも右クリックメニューに登録したりしたかったけど面倒なのでペンディング。ツールバーアイコンは環境によってあちこちに飛んだりする事例をよく見かけたので敢えて避け。
 でもさすがにショートカットキー登録ぐらいはしておくべきだと思った。アドイン化する前のマクロの段階では有効にしてたのだが、Excel のショートカットキーは Ctrl との組み合わせしか使えずバッティングが怖くて外してしまった。このへんちょっと考えどころ。
完了ダイアログ
 ダイアログが表示されたらコピー完了。
 つってもセレロンの 500MHz でさえ 1 秒とかからんわけだが。

5. データの貼り付け

 クリップボードにコピーされたソースをそのままメモ帳に貼ってみた結果。もちろん最大の用途はブラウザで掲示板やブログツールの編集ボックスに貼り付けることであろうかと思う。
コピーされたHTML
 ちなみに結構致命的な問題だが、相手によって貼り付けられないことがある。ブラウザ関係やメモ帳は OK なのだが、クリップボードユーティリティを介したりプレーンなテキストエディタなんかに貼ろうとして失敗することが何度かあった。
 おそらくオブジェクトをコピーした状態となっているのだろうと思うが、作業としては「見えないテキストボックスに貼り付け→値としてのテキストをコピー」しているので、中身はちゃんとテキストになってるはず。
 これ以上今の段階で調べるのは面倒だし、そもそもエディタで作業するならテーブル作成マクロという支援がそちらにあるわけで、まあ個人的にはええかなと。
 つーわけで最初から最後まで投げやりな解説おわり。
 一応サンプルの表を処理してできたHTMLも貼っておきませう。

head1 head2 head3 head4
data11 data12 data13 data14
data21 data22 data23 data24
data31 data33
data41 data42
data51 data52 data54

 こんなんが(割と)すぐにできたら便利かいなあ、というだけのネタでした。以上。