葛飾でひっそり暮らすIT屋の G Suite メモ

Google Apps で快適業務ライフなノウハウを伝えます

Excel 表から HTML のテーブルタグを生成するマクロ

ウェブサイトの編集をしていて面倒だなと感じることの一つにテーブルの作成があります。

テーブルタグを手書きで行うと大量のタグを書く必要があります。しかも、かなり見づらかったりしますのでこれはなんとしても自動化したいところ。 そこで今回は Excel のマクロを使ってテーブルタグを生成する方法をご紹介します。

  1. Excel を起動して Alt キーと F11 キーを押下して Visual Basic Editor を開きます。
  2. メニューバーの [挿入] から [ユーザー フォーム] をクリックします。
  3. ユーザー フォームにテキスト ボックスを挿入します。
  4. メニューバーの [挿入] から [標準モジュール] をクリックします。
  5. 下記のコードを入力します。
Option Explicit
Sub HtmlTableTag()
	'ひと通り変数を宣言します
	Dim LastRow As Long, LastCol As Long
	Dim ArrayAllCells As Variant
	Dim i As Long, j As Long
	Dim TableTag As String
	'すべてのセルを配列に格納します
	ArrayAllCells = Range(Cells(1, 1), Cells.SpecialCells(xlLastCell))
	'FOR ループの処理を行うときに使う数値です
	'LastRow は最終行の行番号を代入します
	LastRow = UBound(ArrayAllCells, 1)
	'LastCol は最終列の列番号を代入します
	LastCol = UBound(ArrayAllCells, 2)
	For j = 1 To LastRow
		'1行毎に TR タグを挿入します
		TableTag = TableTag & vbTab & "<tr>" & vbCrLf & vbTab & vbTab
			'各セルの前後に TD タグを挿入します
			For i = 1 To LastCol
				TableTag = TableTag & "<td>" & ArrayAllCells(j, i) & "</td>"
			Next i
		'1行毎に TR のとじタグを挿入します
		TableTag = TableTag & vbCrLf & vbTab & "</tr>" & vbCrLf
	Next j
	'ひと通り処理が終わったら全体を TABLE タグでくくります
	TableTag = "<table>" & vbCrLf & TableTag & "</table>"
	'テキストをコピーできるようテキストボックスにタグを表示させます
	UserForm1.TextBox1 = TableTag
	UserForm1.Show
End Sub

あとはエクセルのシートにデータを入力し終わった時点でマクロを実行するだけです。ユーザー フォームにテーブルのタグが表示されるはずです。

今回は Excel での方法を紹介しましたがウェブ サービスでも同様のことを実現するものがありますので紹介しておきます。
http://styleme.jp/tool/xls2html/

上記のサイトのほうが設定項目が充実しているので、必要に応じて使い分けるとよさそうですね。