Excelの表をhtmlの表にするVBAコード

スポンサーリンク

htmlの表を作るのは面倒

ブログやホームページに表を載せたくなりましたが、htmlの表を作る簡単なツールがなくて困っていました。
ブログを書いていると、自動改行されてしまうので、タグを全部書いていると結構面倒ですし(特にセルの結合がある場合途中で混乱します)、Excelで作ったものをhtmlの形式にして保存してもすごく大がかりなhtmlとCSSで作られるのでちょっとしたブログで使える感じではないです。

そこでExcelの表をhtmlの表にするVBAコードを作成しました。かなりの力技ですが、一応表として見えるようにはなります。
今後改良を加えていきます。

Excelの表をhtmlの表に変換するVBAコード

今回私が作成したVBAコードは以下のようになります。

実行するとExcelの開いているシートのA100セルにhtmlのタグが表示されます。
100行、100列までの表なら結合されているセルを含めてこれで作成できます。

Sub Excelシートの表をhtmlに変換する()
’何行目・何列目までを表にするか確認する
Dim i As Integer, k As Integer
Dim maxrow As Integer, maxcolumn As Integer
Cells(100, 1) = “”
maxcolumn = 1
For i = 1 To 100
If maxcolumn < Cells(i, Columns.Count).End(xlToLeft).Column Then
maxcolumn = Cells(i, Columns.Count).End(xlToLeft).Column
End If
Next i
maxrow = 1
For k = 1 To 100
If maxrow < Cells(Rows.Count, k).End(xlUp).Row Then
maxrow = Cells(Rows.Count, k).End(xlUp).Row
End If
Next k
’結合しているセルを認識するための操作
Dim c, x As Integer
Dim rowspan(100, 100) As Integer’縦に結合しているセルを認識するための変数
Dim columnspan(100, 100) As Integer’横に結合しているセルを認識するための変数
For i = 1 To maxrow
For k = 1 To maxcolumn
rowspan(i, k) = 1
columnspan(i, k) = 1
For Each c In Cells(i, k).MergeArea
If c.Row < i Then
rowspan(i, k) = 0
columnspan(i, k) = 0
Exit For
ElseIf c.Row > i Then
rowspan(i, k) = c.Row - i + 1
End If
If c.Column < k Then
rowspan(i, k) = 0
columnspan(i, k) = 0
Exit For
ElseIf c.Column > k Then
columnspan(i, k) = c.Column - k + 1
End If
Next c
Next k
Next i
’タグを出力するVBAコード
Dim d As String
d = “<table border=1>”
For i = 1 To maxrow
d = d + “<tr>”
For k = 1 To maxcolumn
If rowspan(i, k) >= 2 And columnspan(i, k) >= 2 Then
d = d & “<td align=center” & ” colspan=” & columnspan(i, k) & ” rowspan=” & rowspan(i, k) & “>” & Cells(i, k) & “</td>”
ElseIf rowspan(i, k) = 1 And columnspan(i, k) >= 2 Then
d = d & “<td align=center” & ” colspan=” & columnspan(i, k) & ” >” & Cells(i, k) & “</td>”
ElseIf rowspan(i, k) >= 2 And columnspan(i, k) = 1 Then
d = d & “<td align=center” & ” rowspan=” & rowspan(i, k) & ” >” & Cells(i, k) & “</td>”
ElseIf rowspan(i, k) = 1 And columnspan(i, k) = 1 Then
d = d & “<td align=center>” & Cells(i, k) & “</td>”
End If
Next k
d = d + “</tr>”
Next i
d = d + “</table>”
Cells(100, 1).Value = d
Cells(100, 1).Select
End Sub

コメント