かつて言葉言葉言葉の野嵜さんがこう言われていました。
個人的には、アウトラインプロセッサ風のHTMLエディタが出現する事に期待したい。Wordのアウトラインプロセッサ機能を良く知つてゐる人間ならば、見出しレヴェルなどが即、HTMLに反映可能である事に氣附くだらう。
實際の所、Wordは理想的なHTMLエディタのモデルなのである。WordがHTML文書を出力する際に、本文の見出しレヴェルのみを反映して呉れるだけで、餘計なフォント情報やら何やらを記録しないで呉れるやうになれば、(ついでに、スタイルの設定をそのまま*.cssファイルに落してくれるやうになれば)私はWordが一番すぐれたHTMLエディタとなるだらうと思ふ。
だいぶ最近になってWordをちゃんと使ってみた限り、たしかにおっしゃる通りだなと感じました。他にまともなHTMLエディタも見つかりませんでしたし、私の調べた限り、WordからまともなHTMLを吐き出すようなツールも存在していませんでした。ならば自分で作ろうと思ったので、作成してみました。
まともな構造を持ったWord文書より、StritなHTML、CSSを出力します。出力されるHTMLはHTML4.01、CSSはCSS Level2となります。(CSS出力機能についてはあまり期待しないほうが良いと思います。)
Word2002で作成しているので、他のバージョンではうまく動かない可能性があります。可能性がある、というか可能性が高い、といったほうが正確かもしれません。動かなかったらごめんなさい。
以下に、Wordの「スタイルと書式」により選択できるスタイルと、当マクロで出力されるHTMLの要素、CSSのセレクタの対応表を示します。
スタイルと書式 | インライン/ブロック | HTML要素 | CSSセレクタ |
---|---|---|---|
見出し1 | ブロックレベル | h1 | h1 |
見出し2 | ブロックレベル | h2 | h2 |
見出し3 | ブロックレベル | h3 | h3 |
見出し4 | ブロックレベル | h4 | h4 |
見出し5 | ブロックレベル | h5 | h5 |
見出し6 | ブロックレベル | h6 | h6 |
見出し7 | ブロックレベル | h6 | h6 |
見出し8 | ブロックレベル | h6 | h6 |
見出し9 | ブロックレベル | h6 | h6 |
標準 | ブロックレベル | p | p |
標準(Web) | ブロックレベル | p | |
ブロック | ブロックレベル | blockquote p | blockquote p |
HTMLアドレス | ブロックレベル | address | address |
HTML書式付き | ブロックレベル | pre | pre |
箇条書き | ブロックレベル | ul | ul |
強調斜体 | インラインレベル | em | em |
強調太字 | インラインレベル | strong | strong |
HTMLキーボード | インラインレベル | kbd | kbd |
HTMLコード | インラインレベル | code | code |
HTMLサンプル | インラインレベル | samp | samp |
HTML定義 | インラインレベル | dfn | dfn |
HTML変数 | インラインレベル | var | var |
HTML略語 | インラインレベル | abbr | abbr |
解凍して出来たテンプレート(どちらでもかまいませんし、両方でもかまいません)を、Wordのテンプレートが保存されている場所へコピーしてください。テンプレートフォルダに保存しないと、多くの場合マクロが実行できません。
使い方としては2通りあります。テンプレートを用いて文書を作成する方法と、別の方法で作成された文書に対してアドインとして利用する方法です。
初回のみ以下を実行してください。
初回以外は以下を実行してください。
バージョンなしのものをお使いの方で、Normal内にインポートしている方は以下の手順でマクロを削除してください。
削除をしなくても、新バージョンを使うことは出来ます。
テーブルの判断は何とかなりそうなので、いずれ対応したいと考えています。
ハイパーリンクについても対応したいと考えています。
リストに対応したものの、どうも謎な部分がありました。
HTMLで言う、以下のようなリストが合った場合、一番目のListNumberの数値が0だったり1だったりします。
<ol> <li>あ</li> <li>い</li> <li>う</li> </ol>
調べたところ、「・」や「*」を入力した後に、自動でリストにされる場合(オートフォーマットとかいうやつ)のときのみ0になる模様です。それを判断することは出来ないようだったので、1の時に最初とするように判断しています。何かうまい判断の方法があったら教えてください。
ソースがよろしくない。まともなHTMLを吐くためのツールのソースが微妙ってどんなギャグだよ。特にクラスの設計は見直さないと。VBA的に無理なことも多々ある(コンストラクタ引数とか継承とか)ので、ちゃんと調べてから作らないと。
お好きなように改造して配布してください。その際、このサイトのことを書いてもらってもかまいませんし、書いてもらわなくてもかまいません。
個人的にはこれを基に(基にしなくても)、もっとすばらしいツールを作成してくれる人が現れることを期待しています。