Excelの表データをHTML形式のtableタグに変換することはよくある作業ですが、今回はExcelの表を簡単に見出しタグ付きのHTML形式のTABLEタグに変換するユーザー定義関数を紹介します。
ユーザー定義関数の作成
まずは、次のVBAコードを使って、ユーザー定義関数「RangeToHTMLTable」を作成します。
VBAエディタを開き(Alt+F11)、「標準モジュール」へコードを貼り付けてください(挿入→標準モジュール)。
Function RangeToHTMLTable(rng As Range, Optional theadRow As Long = 0, Optional tfootRow As Long = 0, Optional thRow As Long = 0, Optional thCol As Long = 0) As String Dim output As String Dim row As Range Dim cell As Range Dim rowIndex As Long Dim colIndex As Long output = "<table>" rowIndex = 1 For Each row In rng.Rows If rowIndex = theadRow Then output = output & "<thead>" If rowIndex = rng.Rows.Count - tfootRow + 1 Then output = output & "<tfoot>" output = output & "<tr>" colIndex = 1 For Each cell In row.Cells If rowIndex = thRow Or colIndex = thCol Then output = output & "<th>" & cell.Value & "</th>" Else output = output & "<td>" & cell.Value & "</td>" End If colIndex = colIndex + 1 Next cell output = output & "</tr>" If rowIndex = theadRow Then output = output & "</thead>" If rowIndex = rng.Rows.Count - tfootRow + 1 Then output = output & "</tfoot>" rowIndex = rowIndex + 1 Next row output = output & "</table>" RangeToHTMLTable = output End Function
関数の分類の「ユーザー定義」に登録されます。
関数の使い方
次に、作成した「RangeToHTMLTable」関数の使い方を説明します。 この関数は、5つの引数を持ちます。必須の引数は1つだけで、それ以外の引数はすべてオプションです。
- rng: HTMLテーブルに変換する範囲
- theadRow: 上から何行目をtheadタグとするか(既定値は0)
- tfootRow: 下から何行目をtfootタグとするか(既定値は0)
- thRow: 上から何行目のセルをすべてthタグとするか(既定値は0)
- thCol: 左から何列目のセルをすべてthタグとするか(既定値は0)
基本的な使い方
例えば、A1:C4の範囲にある表をHTMLテーブルに変換するには、次のように入力します。関数リストの「ユーザー定義」に登録されます。
=RangeToHTMLTable(A1:C4)
これにより、A1:C4の範囲がHTMLのtableタグに変換されます。
見出しタグの設定
見出しタグを設定するには、オプション引数を指定します。
例えば、最初の行をtheadタグとして、最後の行をtfootタグとして、最初の列をthタグとする場合は、次のように入力します。
=RangeToHTMLTable(A1:C5, 1, 1, 0, 1)
これにより、最初の行がtheadタグ、最後の行がtfootタグ、最初の列がthタグとなったHTMLテーブルが生成されます。
コメント