Excelの表から、HTMLを作成するということが、実務ではまだまだ発生します。
そんなときに、文字列を連結する演算子「&」を使った数式を入力してテーブルタグを作成するということを行ったりします。
非常に便利な方法ですが、列数が増えると、数式を手入力するのが面倒です。
テーブルタグを作成するサンプルマクロ
このテーブルタグを作成するための数式を入力するマクロをVBA(Visual Basic for Applications)で作ってみました。
Dim tag_tbl As String
Dim col_num As Long
Dim i As Long
With ActiveCell
' アクティブセルにデータが入っているときは終了
If Len(.Value) > 0 Then Exit Sub
' アクティブセルの列番号を取得
col_num = .Column
' タグ作成の開始
' 数式として入力する「&」と区別するため
' 以下タグ作成処理の一部で「&」を「+」で代用
tag_tbl = """<tr>"
For i = 1 To col_num - 1
tag_tbl = tag_tbl + "<td>""" + " & "
tag_tbl = tag_tbl + "RC[" & i - col_num & "]"
tag_tbl = tag_tbl + " & " + """</td>"
Next i
tag_tbl = tag_tbl + "</tr>"""
' テーブルタグを作る数式の書き込み
.FormulaR1C1 = "=" & tag_tbl
End With
End Sub
例えば、A列からG列までの表があるときに、H1セルを選択しておいてから、上記のマクロを実行すると、A1:G1セルからHTMLのTABELの1行にするタグを、H1セルに数式の形で入力してくれます。
HTMLファイル上の個別の列にスタイルを指定したいこともありますから、上記のマクロ実行後に作成された数式を修正して、その後ダブルクリックなどでオートフィルしてすべての行のタグを作る仕様としました。
サンプルマクロの解説
データが消えるとイヤですから、アクティブセルにデータが入っているときは、問答無用でマクロを終了しています。
If Len(.Value) > 0 Then Exit Sub
アクティブセルが空っぽなら実際にマクロが開始してTR・TDタグを作成します。
厄介なのがHTMLタグを作るためには「"」や「&」を入力しなければならないところです。
「"」を文字列として使うためにVBAでは「""」(ダブルクォート2個)と指定する関係で、コード上で文字列を括る「"」とつながった「"""」(ダブルクォート3個)があちこちにあります。
VBAで文字列の連結は演算子「&」を使いますが、今回のマクロでは数式の中に「&」を入れる必要があります。すると、数式として利用する「&」なのか、VBAのコード上で文字列を連結する「&」なのかが区別しにくくなります。
そのため、反則技ですが、本来は足し算をする演算子「+」を使ってVBA上の文字列の連結を敢えて行っています。
ただし、
tag_tbl = tag_tbl + "RC[" & i - col_num & "]"
という行の
"RC[" & i - col_num & "]"
の部分は、本来の文字列連結演算子「&」でないとダメなので、加算演算子「+」で代用するのではなく、本来の「&」を使っています。
他の部分はおそらく大丈夫だと思いますが、上記のマクロが万一うまく動かないようなときは「+」を「&」に修正してください。
最後にテーブルタグを作る数式をアクティブセルに書き込んでいます。
.FormulaR1C1 = "=" & tag_tbl
Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » HTMLテーブルタグを作成するExcelマクロ