Excel Solution #08
− XL meets WWW −
ところで XML って何 ?本文中でも取り上げたが、Windows 版 Excel のうち Excel 2000 以降は、HTML と XML を組み合わせることで、数式や図形、グラフなどの情報をまったく欠落させずに「Web ページとして保存」できるようになっている。また、Macintosh 版 Excel 2004 でも、複数のシートを含むブックを Web ページとして保存すると、HTML 文書ファイルの中に XML タグが含まれていて、そこにブックを構成するシートに関する情報が書かれている。 このようにいろいろな使われ方をしている XML だが、馴染み深い HTML と違って、「名前は知ってるけど、どんなものかはよく分からない」という方も少なくないだろう。 HTML では、見出しを意味する <H1>…</H1>、あるいは画像を表示する <IMG>、表組みを規定する <TABLE>…</TABLE> といった具合に、最初からタグの名前と用途が全部決められている。それに対してXMLは、タグの名前も用途も、使う側が自由に決めてよい。そのため、文字で記述できる情報なら、理屈の上では何でもXMLで記述できる。ただし、XML文書を解釈して利用する個々のアプリケーションが、「どの情報を何という名前のタグで記述するか」を知っていなければならない。 たとえば、Excel 2004 でファイルを保存する際に、フォーマットとして [XML スプレッドシート] を選択してみよう。警告メッセージが表示されるとおり、オブジェクトやグラフに関する情報は抜け落ちてしまうが、表と、そこに入力された文字列・数値・数式の情報は保持される。そして、保存された XML スプレッドシート (「*.xml」という拡張子がつけられている) をテキストエディタで開いてみると、こんな内容になっている。
XML の特徴は、記述するデータの内容に応じて好きなようにタグの名前を決められる点にある。先の図の例でも、タグの名前を見れば、<Cell> はセル、<Row> は行に対応するのだろう、と容易に推測できる。これらのタグは、Excel が独自に規定しているタグだから、どのタグがどの情報に対応しているのかを知っているのは Excel だけだ。 だから、このファイルを Excel 以外のアプリケーション、たとえば Internet Explorer で開いても、タグがそのままツリー構造になって表示されるだけ、ということになってしまう。 逆に、XML スプレッドシートではない XML 文書を用意して Excel で開いても、知らないタグが記述されているだけだから、Excel は「開こうとしているファイルは、有効な XML スプレッドシートではありません」と警告を出す。その場合、単なるテキスト ファイルとして開くように指示できるが、1 行ごとの内容がそのままセルに格納されたワークシートができるだけだ。 Excel だけで完結するデータ保存手段として使うのであれば、XML スプレッドシートでも Excel ブック形式でも違いはない。それどころか、グラフや図形描画オブジェクトの情報を保存できない分だけ、XML スプレッドシートの方が見劣りしてしまう。 では、XML スプレッドシートがいったい何の役に立つかというと、他のアプリケーションとのデータ交換に使う場面が考えられる。Excel のブック ファイルに直接アクセスしようとすると、ファイルの内部構造を知らなければ内容を知ることができない。だが、XML で書かれたデータならテキスト ファイルであり、中身を直接見ることができる。あるいは、XML 文書にアクセスするために規定されている各種仕様を使ってプログラムを作成する方法もある。 XML 文書にアクセスしてデータを読み出す方法としては、DOM (Document Object Model) を使う方法などが規定されている。こうしたプログラミング手法を勉強すれば、Excel で作成した XML スプレッドシートからデータを取り出して利用するプログラムを開発できるというわけだ。 | |||
タグは手打ちにいたす!
といっても、日本刀で切り捨てるという話ではない。(時代劇の見過ぎ? いや、そんなことはないはずだ…)
筆者がイントラネット向けに Web サイトを作り始めたのは、かれこれ 9 年近く前の話になる。当時、Windows 版 Word 95 (英語版) には Word 文書を HTML 形式で出力するアドインが用意されていたが、実際に使ってみたら面倒に思えてしまい、リファレンスを片手にテキスト エディタで HTML タグを手書きするようになってしまった。以来、社内向け、後にはインターネット向けに Web サイトをいくつか運用しているが、HTML エディタを使ったことはほとんどない。
もっとも、自分が HTML を書き始めた当初は、まだ HTML 1.0 の時代で、タグの種類も少なかった。そんな時期から生の HTML タグに触れることができたのは、今にしてみればよかったと思っている。基本が分かっていれば、増えたタグだけ追加で覚えれば済むからだ。
よく考えると、Excel にも同じことがいえる。Excel との付き合いは 15 年近くに及び、Windows 版の Excel 2.1 から延々と使い続けてきた。バージョンアップの度に追加、あるいは変更された点だけを段階的に覚えればよかったから、いきなり大量の機能を目の前にドンと出されるよりも、学習は容易だっただろう。
閑話休題。
そんな経緯があるので、たいていの HTML タグは手作業でも苦痛に感じないのだが、唯一「これは面倒極まりない」と思うのが、表組みを作成する <TABLE> <TR> <TD> タグだ。そして、表といえばなんといっても Excel である。
筆者がイントラネット向けに Web サイトを作り始めたのは、かれこれ 9 年近く前の話になる。当時、Windows 版 Word 95 (英語版) には Word 文書を HTML 形式で出力するアドインが用意されていたが、実際に使ってみたら面倒に思えてしまい、リファレンスを片手にテキスト エディタで HTML タグを手書きするようになってしまった。以来、社内向け、後にはインターネット向けに Web サイトをいくつか運用しているが、HTML エディタを使ったことはほとんどない。
もっとも、自分が HTML を書き始めた当初は、まだ HTML 1.0 の時代で、タグの種類も少なかった。そんな時期から生の HTML タグに触れることができたのは、今にしてみればよかったと思っている。基本が分かっていれば、増えたタグだけ追加で覚えれば済むからだ。
よく考えると、Excel にも同じことがいえる。Excel との付き合いは 15 年近くに及び、Windows 版の Excel 2.1 から延々と使い続けてきた。バージョンアップの度に追加、あるいは変更された点だけを段階的に覚えればよかったから、いきなり大量の機能を目の前にドンと出されるよりも、学習は容易だっただろう。
閑話休題。
そんな経緯があるので、たいていの HTML タグは手作業でも苦痛に感じないのだが、唯一「これは面倒極まりない」と思うのが、表組みを作成する <TABLE> <TR> <TD> タグだ。そして、表といえばなんといっても Excel である。
Excel ブックを Web ページ (HTML)
として保存する
他の Office アプリケーションと同様、Excel にもブックを HTML 文書として保存する機能がある。使い方に難しい点はなく、[ファイル] - [Web ページとして保存] を選択して、保存する HTML 文書のファイル名を指定するだけだ。(ファイル名指定ダイアログで、フォーマットを [Web ページ(HTML)] としても同じ)
たとえば、Excel で Web ページとして保存するよう指示する際に、ファイル名として「Sample.html」を指定すると、出力先に指定したフォルダには「Sample.html」という HTML 文書ファイルと、「Sample.files」というフォルダができる。
後者のフォルダには、Excel で作成されていたグラフや図形オブジェクトをPNG形式の画像データに変換したものや、ブックを構成する複数のシートにそれぞれ対応する HTML 文書ファイルが格納される仕組みになっている。そのため、Web ページとして保存された内容を他の場所に持ち歩く際には、HTML 文書とフォルダの両方をコピー、あるいは移動する必要がある。
こうして作成された HTML 文書ファイルを Finder 上でダブルクリックすると、それが既定の Web ブラウザで開かれる。元の Excel ブックと、それを Web ページとして保存して Internet Explorer 5.2 で開いた結果を並べて比較してみよう。
(ただ、作例のように Quartz を使った透過表示を行なっていると、MacOS X では正常に表示されるが、Windows で表示させると透過しなくなって、図形がその下の内容を覆い隠してしまう点に注意が必要だ)
ちなみに、Excel で HTML 文書を開く使い方もある。Excel で作成した HTML 文書だけでなく、その他のアプリケーションが作成した HTML 文書、あるいは手作業でタグを記述した HTML 文書を開くこともできるが、Excel ではあくまで「表」という枠組みから抜けられないので、表になっていない HTML 文書は文章が段落ごとにセルにはめ込まれるだけ、ということになりやすい。それでも、HTML 文書になっているデータを Excel に流用する役には立つ。
![]() 図 1 : [ファイル]-[Webページとして保存]を選択するか、あるいはファイル名指定ダイアログでフォーマットを[Webページ(HTML)]に指定すると、作業中のブックがHTML文書に変換された形で保存される |
後者のフォルダには、Excel で作成されていたグラフや図形オブジェクトをPNG形式の画像データに変換したものや、ブックを構成する複数のシートにそれぞれ対応する HTML 文書ファイルが格納される仕組みになっている。そのため、Web ページとして保存された内容を他の場所に持ち歩く際には、HTML 文書とフォルダの両方をコピー、あるいは移動する必要がある。
こうして作成された HTML 文書ファイルを Finder 上でダブルクリックすると、それが既定の Web ブラウザで開かれる。元の Excel ブックと、それを Web ページとして保存して Internet Explorer 5.2 で開いた結果を並べて比較してみよう。
(ただ、作例のように Quartz を使った透過表示を行なっていると、MacOS X では正常に表示されるが、Windows で表示させると透過しなくなって、図形がその下の内容を覆い隠してしまう点に注意が必要だ)
![]() | 図 2 : 元の Excel ブック。書式設定を行った表に加えて、図形オブジェクトやグラフが置かれている |
![]() | 図 3 : 作例のように、ひとつのブックに複数のシートが含まれる場合には、HTML の内容に工夫をして Excel のブック画面と似たイメージで扱えるようにしている。ただし、あくまで「見るだけ」で、表の内容を書き換えるような使い方はできない |
Excel を Web コンテンツの生成に利用する
このように、Excel ブックの形で存在するデータがあれば、それを簡単に HTML 化できるので、たとえば業務で作成した表やグラフを社内のイントラネットに載せて公開するような使い方に応用できる。また、手作業で HTML を記述するのが面倒な表組みだけを Excel で作成しておいて、それを HTML 形式で保存してから Web サーバにライブする、という使い方も可能だ。
自分の Macintosh でパーソナル Web 共有を動作させていれば、Excel が出力した HTML 文書 (と、一緒に生成される「*.files」フォルダ) を [サイト] フォルダに移動するだけで、Excel ブックを HTML 化して、Web コンテンツとして公開できることになる。もちろん専用の Web サーバを用意してもよい。
Windows 版 Excel のうち Excel 2000 以降のバージョンでは、HTML 形式でブックを保存すると、妙にサイズの大きい HTML 文書ができあがる。これは、表、グラフ、図形描画オブジェクトなど、Excel ブックに含まれるすべての情報が、一切失われずに保存されているためだ。この仕組みは、XML タグを組み合わせることで実現されていて、HTML タグでは表現不可能な情報について、Excel 独自の XML タグを使って記述する格好になっている。
そのため、HTML 形式で保存したファイルを再度 Excel で開いても情報がまったく失われない利点がある反面、生成される HTML 文書には大量に XML タグが組み込まれていて、Web サイトに掲載する表組みなどを Excel で作成する、という単純な使い方にはオーバースペックだ。
しかし、Macintosh 版 Excel では Windows 版の Excel 97 と同様、HTML で記述可能な情報だけが書き出される。しかも、下の画像を見ていただければお分かりの通り、改行とスペースを使って成形した状態で出力するので、HTML の心得があれば、目指すタグを見つけ出すのは難しくない。たとえば、表組みに対応する <table>…</table> タグまでの内容をコピーすれば、Excel で作成した表を他の HTML 文書に容易に流用できる。
もちろん、HTMLだけでは数式やグラフの情報を記述できないから、この使い方はあくまで「Excel→HTML」の一方通行になってしまうが、余分な情報がないからデータ量は少ないし、可読性もよい。手軽なWebコンテンツ作成ツールとして利用するのであれば、これで十分だろう。
自分の Macintosh でパーソナル Web 共有を動作させていれば、Excel が出力した HTML 文書 (と、一緒に生成される「*.files」フォルダ) を [サイト] フォルダに移動するだけで、Excel ブックを HTML 化して、Web コンテンツとして公開できることになる。もちろん専用の Web サーバを用意してもよい。
Windows 版 Excel のうち Excel 2000 以降のバージョンでは、HTML 形式でブックを保存すると、妙にサイズの大きい HTML 文書ができあがる。これは、表、グラフ、図形描画オブジェクトなど、Excel ブックに含まれるすべての情報が、一切失われずに保存されているためだ。この仕組みは、XML タグを組み合わせることで実現されていて、HTML タグでは表現不可能な情報について、Excel 独自の XML タグを使って記述する格好になっている。
そのため、HTML 形式で保存したファイルを再度 Excel で開いても情報がまったく失われない利点がある反面、生成される HTML 文書には大量に XML タグが組み込まれていて、Web サイトに掲載する表組みなどを Excel で作成する、という単純な使い方にはオーバースペックだ。
しかし、Macintosh 版 Excel では Windows 版の Excel 97 と同様、HTML で記述可能な情報だけが書き出される。しかも、下の画像を見ていただければお分かりの通り、改行とスペースを使って成形した状態で出力するので、HTML の心得があれば、目指すタグを見つけ出すのは難しくない。たとえば、表組みに対応する <table>…</table> タグまでの内容をコピーすれば、Excel で作成した表を他の HTML 文書に容易に流用できる。
![]() | 図 4 : Macintosh 版 Excel 2004 が Web ページ形式として出力するものは純然たる HTML 文書で、このように改行とインデントで成形されているから、HTML の心得があれば、必要な部分だけ抜き出して利用する使い方も容易にできる |
Web ページや Word・PPT とのコピー & ペースト
Microsoft Office が「インターネット指向」を取り入れたのは、Windows 版では Office 97、Macintosh 版では Office 98 以降の話になる。それによって取り入れられた機能としては、先に挙げた HTML 文書の出力機能以外に、ハイパーリンク機能が挙げられる。これらはメニューに現れる分かりやすい機能追加だが、実は、意外なところに「インターネット指向」の影響が出ている。
昔の Office では、異なるアプリケーション間、たとえば Excel の表をコピーして Word にペーストするような使い方をすると、コピー元アプリケーションのオブジェクトがペーストされるのが既定値だった。いわゆる OLE (Object Linking and Embedding) だ。
ところが、現行の Office 2004 で同じ操作を行うと、既定値ではオブジェクトは作成されない。では、どの形式でペーストされるのかというと、HTML が既定値になっている。といっても、HTML タグがペーストされるわけではなくて、HTML を使って書式情報を保持したものが、(コピー元アプリケーションのオブジェクトとしてではなく) そのままの形でペーストされるという意味だ。
たとえば、Excel で書式や配置を指定した表を作ってあったとする。この表全体をコピーして Word にペーストすると、HTML タグの機能を使って書式や配置が表現された Word の表組みが、元の表の体裁を維持したままでペーストされ、かつてのように Excel ワークシートオブジェクトにはならない。逆方向の場合にも、Word の表組みとして作成していた表が、そのまま Excel ワークシートの個々のセルに対応する形でペーストされ、Word 文書オブジェクトにはならない。
(いずれのケースでも、[編集] - [形式を選択してペースト] を選択すれば、オブジェクトとしてペーストすることも可能だ)
もちろん、図形やグラフのように HTML では表現できないものについては、従前どおりのオブジェクト、あるいは図として貼り付けられるが、文字データについてはさりげなく、HTML を利用しているのが興味深い。
ただ、Macintosh では Web ブラウザでコピーした内容を Excel にペーストしても文字情報しかペーストされず、書式情報が抜け落ちてしまう。おそらく、Web ブラウザ側の仕様に起因する制約と思われるが、やや惜しまれるところだ。Web ページの内容を同じ外見のままで Excel に流用できると、意外と便利なのだが。
昔の Office では、異なるアプリケーション間、たとえば Excel の表をコピーして Word にペーストするような使い方をすると、コピー元アプリケーションのオブジェクトがペーストされるのが既定値だった。いわゆる OLE (Object Linking and Embedding) だ。
ところが、現行の Office 2004 で同じ操作を行うと、既定値ではオブジェクトは作成されない。では、どの形式でペーストされるのかというと、HTML が既定値になっている。といっても、HTML タグがペーストされるわけではなくて、HTML を使って書式情報を保持したものが、(コピー元アプリケーションのオブジェクトとしてではなく) そのままの形でペーストされるという意味だ。
たとえば、Excel で書式や配置を指定した表を作ってあったとする。この表全体をコピーして Word にペーストすると、HTML タグの機能を使って書式や配置が表現された Word の表組みが、元の表の体裁を維持したままでペーストされ、かつてのように Excel ワークシートオブジェクトにはならない。逆方向の場合にも、Word の表組みとして作成していた表が、そのまま Excel ワークシートの個々のセルに対応する形でペーストされ、Word 文書オブジェクトにはならない。
(いずれのケースでも、[編集] - [形式を選択してペースト] を選択すれば、オブジェクトとしてペーストすることも可能だ)
![]() | 図 5 : まず、書式設定を行った表を Excel で作成して、それをコピーする |
![]() | 図 6 : それを [編集] - [ペースト] で Word 文書にペーストした結果。書式情報を HTML で保持することで、(オブジェクトではなく) Word の表組みとして貼り付ける仕組みになっている。ただし、Office 2004 ではスマートタグを使えるので、ペーストする情報の内容を、スマートタグの選択によって後から変更できる |
ただ、Macintosh では Web ブラウザでコピーした内容を Excel にペーストしても文字情報しかペーストされず、書式情報が抜け落ちてしまう。おそらく、Web ブラウザ側の仕様に起因する制約と思われるが、やや惜しまれるところだ。Web ページの内容を同じ外見のままで Excel に流用できると、意外と便利なのだが。







