WordToHTML

はじめに

かつて言葉言葉言葉の野嵜さんがこう言われていました。

個人的には、アウトラインプロセッサ風の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出力セレクタの対応表

以下に、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

ダウンロード

WordToHTMLv1.0
解凍してご使用ください。解凍するとテンプレートが2つとソースが入ったフォルダが出来上がります。
テンプレートの片方は、いわゆる闇黒日記風と言われているCSSに近い表示になるように、「スタイルと書式」を変更したものです。
ソースはマクロで使われているものをただエクスポートしたものです。

使い方

解凍して出来たテンプレート(どちらでもかまいませんし、両方でもかまいません)を、Wordのテンプレートが保存されている場所へコピーしてください。テンプレートフォルダに保存しないと、多くの場合マクロが実行できません。

使い方としては2通りあります。テンプレートを用いて文書を作成する方法と、別の方法で作成された文書に対してアドインとして利用する方法です。

テンプレートを用いて文書を作成する場合

  1. 文書の新規作成の際に、WordToHTMLのテンプレートを選択する
  2. 文書を作成する
  3. 「ファイル」→「WordToHTMLで保存」を選択するか、WordToHTMLツールバー(概ね右上のほうに出てくる)の「WordToHTMLで保存」を選択する
  4. 保存先を設定するフォームが現れるので、保存先選択で保存先を選択する。(CSSの出力先はHTMLの出力先が決定したのち、自動で設定されます)
  5. 実行ボタンを押す。
  6. 「完了しました」のメッセージが出たら完了。

アドインとして利用する場合

初回のみ以下を実行してください。

  1. 「ツール」→「テンプレートとアドイン」を選択
  2. 「アドインとして使用できるテンプレート」にWordToHTMLのテンプレートを追加

初回以外は以下を実行してください。

  1. 文書を作成する
  2. 「ツール」→「テンプレートとアドイン」を選択
  3. WordToHTMLをチェックする
  4. 「ファイル」→「WordToHTMLで保存」を選択するか、WordToHTMLツールバー(概ね右上のほうに出てくる)の「WordToHTMLで保存」を選択する
  5. 保存先を設定するフォームが現れるので、保存先選択で保存先を選択する。(CSSの出力先はHTMLの出力先が決定したのち、自動で設定されます)
  6. 実行ボタンを押す。
  7. 「完了しました」のメッセージが出たら完了。

旧バージョンをお使いの方

バージョンなしのものをお使いの方で、Normal内にインポートしている方は以下の手順でマクロを削除してください。

  1. プロジェクトエクスプローラ(概ね左上の方にでているもの)内より、削除したいファイルを右クリック→「XXXの開放」を選択する。

削除をしなくても、新バージョンを使うことは出来ます。

今後の対応

テーブルの判断は何とかなりそうなので、いずれ対応したいと考えています。

ハイパーリンクについても対応したいと考えています。

リスト

リストに対応したものの、どうも謎な部分がありました。

HTMLで言う、以下のようなリストが合った場合、一番目のListNumberの数値が0だったり1だったりします。

<ol>
    <li>あ</li>
    <li>い</li>
    <li>う</li>
</ol>

調べたところ、「・」や「*」を入力した後に、自動でリストにされる場合(オートフォーマットとかいうやつ)のときのみ0になる模様です。それを判断することは出来ないようだったので、1の時に最初とするように判断しています。何かうまい判断の方法があったら教えてください。

何とかできないかなあと思ってること

ソースがよろしくない。まともなHTMLを吐くためのツールのソースが微妙ってどんなギャグだよ。特にクラスの設計は見直さないと。VBA的に無理なことも多々ある(コンストラクタ引数とか継承とか)ので、ちゃんと調べてから作らないと。

ソースの改造について

お好きなように改造して配布してください。その際、このサイトのことを書いてもらってもかまいませんし、書いてもらわなくてもかまいません。

個人的にはこれを基に(基にしなくても)、もっとすばらしいツールを作成してくれる人が現れることを期待しています。