Excel の表を HTML テーブルに変換します

 今回はサイトやブログを運営している皆さんに、スペシャルな VBA マクロを提供しちゃいますよ。な、な、なんと!

 Excel のテーブル形式データをそのまま HTML のテーブルに変えてしまうマクロ

なのです! いくつかのバージョンを試作してみましたけれど、その中でも配列による高速処理を徹底したプログラムを紹介します。これで何万行もあるデータも安心して HTML テーブルに変換できます。テーブル形式データであれば何でも構いませんけど、すぐに用意できない人は下の表をコピーして試してみてください(念のために言っておきますが下記住所は実在しません)。

氏名 ふりがな 住所
本出 光見 ほんで こうけん 茨城県ひたちなか市木葉下10-42-5
波羅蜜 共成 はらみつ ともなり 栃木県那須烏山市烏帽子「榛名湖畔」5-32-26
殖木 梓 ふえき あずさ 群馬県北群馬郡圷大野33
黒葛原 綾 つづらはら あや 埼玉県さいたま市緑区姫子5-13-48
中虫壁 優理子 なかむしかべ ゆりこ 千葉県木更津市石名坂5-12-25

 これをシートに貼りつけて、必ず「見出し付」のテーブル形式に変換してください。テーブルに変換する方法は 「表をテーブルに変換しましょう」 を参考にしてくださいな。
 

HTML テーブルに変換します

 見出し付 HTML テーブルに変換するマクロです。ワークシートのテーブル内のセルを選択して以下のマクロを実行すると、今開いているブックと同じフォルダにデータの入ったテキストファイルが作成されます。

 Option Base 1

 Sub HTMLTable()

 Dim i As Long, j As Long
 Dim ctr As Long, ctc As Long
 Dim mydata As Variant
 Dim mystr() As String
 Dim myfno As Integer
 Dim mytxt As String

 '選択されたリストを2次元配列変数に入れます
 mydata = Selection.ListObject.Range

 '行数と列数を取得します
 ctr = UBound(mydata, 1)
 ctc = UBound(mydata, 2)

 '2行目以降のデータを<td>と</td>で囲みます
 For j = 1 To ctc

  For i = 2 To ctr
   mydata(i, j) = "<td>" & mydata(i, j) & "</td>"
  Next i

 Next j

 '見出し部分だけ<th>と</th>で囲みます
 For j = 1 To ctc
  mydata(1, j) = "<th>" & mydata(1, j) & "</th>"
 Next j

 '1列目に<tr>、最終列に</tr>を付けます
 For i = 1 To ctr
  mydata(i, 1) = "<tr>" & mydata(i, 1)
  mydata(i, ctc) = mydata(i, ctc) & "</tr>"
 Next i

 '表全体を table タグで囲みます
 mydata(1, 1) = "<table>" & mydata(1, 1)
 mydata(ctr, ctc) = mydata(ctr, ctc) & "</table>"

 '配列変数 mystr の要素数を決定します
 ReDim mystr(ctr)

 '2次元配列を1次元配列にまとめます
 For j = 1 To ctc

  For i = 1 To ctr
   mystr(i) = mystr(i) & mydata(i, j)
  Next i

 Next j

 'データを保存するファイルの名前を決めます
 mytxt = ActiveWorkbook.Path & "\HTMLTable.txt"

 myfno = FreeFile

 'テキストファイルを開きます
 Open mytxt For Output As #myfno

 'テキストファイルにデータを出力します
 For j = 1 To ctr
  Print #myfno, mystr(j)
 Next j

 'テキストファイルを閉じます
 Close #myfno

 End Sub

 実行するとフォルダに「 HTMLTable 」というファイルが作成されるので開いてみてね。HTML のタグで囲まれたデータがあるはずです。細かいデザインについては CSS で設定している人が大半だと思うので必要最小限のシンプルな形にしてあります。クラス指定などは自分で付け加えてくださいね。別にデザインなんてどうでもいいと思うなら、そのまま貼るだけでシンプルなテーブルが表示されます。

 さすがにちょっと長いマクロなので、全てを説明することはできませんけど、特に難しいことをしているわけでもなく単純な配列操作の繰返しです。 ListObject オブジェクトの扱い方に関しては ≫ データベース研究所 あたりの記事を参考にしてください。もし動作に不具合などがあれば御指摘ください。適宜プログラムを修正します。「もうちょっとこうしてほしい」というご要望があれば、それもコメントでお知らせください。もし可能であればまた別記事でリニューアルバージョンを載せます。 ≫ VBA の技術

スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)