Excelの表をHTMLへ変換しセルへ出力したいときはないでしょうか。
けど、そんな中で悩むことは、
・Excelの表をHTML出力すると余計なスタイルが入るので除きたいが方法がわからない。
ですよね。
今回はそんなお悩みを解決する
についてまとめます!
もくじ
Excelの表をHTMLへ変換しセルへ出力するイメージ
Excelの表をHTMLへ変換しセルへ出力するイメージについて説明をします。
HTMLへ変換したい表を用意します。
VBAにその表の範囲を指定し、VBAを実行すると、
表を変換したHTMLが指定したセルへ出力されます!
また項目のTHにしたい箇所も行列ともに指定が可能です!
それでは早速試してみましょう。
Excelの表をHTMLへ変換する方法!widthやthも調整可!
VBAでExcelの表をHTMLへ変換しセルへ出力する
VBAを使い、Excelの表をHTMLへ変換する機能を追加していきましょう。
HTMLへ変換する表と出力先セルを用意する
Excel側へHTMLへ変換する表を用意しましょう。
サンプルは”A1:C11″を指定しています。
またHTML出力先となるセルの位置を決めておきます。
サンプルはF2セルを指定しています。
VBAコード
VBAのサンプルコードは以下の通りです。
Sub Excelの表をHTMLテーブルタグへ変換しセルへ出力する()
Dim strHTML As String
Dim arrRange As Variant
Dim intSelectTHrow As Integer
Dim intSelectTHcol As Integer
Dim i As Integer
Dim j As Integer
'テーブルタグへ変換したい範囲を指定します。
arrTemp = Range("A1:C11")
'項目のTHタグにしたい行番号を指定します。指定しな場合は0にしてください。
intSelectTHrow = 1
'項目のTHタグにしたい列番号を指定します。指定しな場合は0にしてください。
intSelectTHcol = 0
'テーブルの開始タグを追加します。
strHTML = "<table>" & vbCrLf & "<tbody>" & vbCrLf
'アクティブであるシートを対象にします。
With ActiveSheet
'存在する行数分処理を繰り返します。
For i = LBound(arrTemp, 1) To UBound(arrTemp, 1)
'TRタグを追加します。
strHTML = strHTML & "<tr>" & vbCrLf
'存在する列数分処理を繰り返します。
For j = LBound(arrTemp, 2) To UBound(arrTemp, 2)
'TH指定箇所になったかどうか判定します。
If i = intSelectTHrow Or j = intSelectTHcol Then
'指定行数にTHタグを挿入します。
strHTML = strHTML & "<th>" & .Cells(i, j).Value & "</th>" & vbCrLf
Else
'セルの値ごとにTDタグを挿入します。
strHTML = strHTML & "<td>" & .Cells(i, j).Value & "</td>" & vbCrLf
End If
Next j
'TRタグを挿入します。
strHTML = strHTML & "</tr>" & vbCrLf
Next i
'テーブルの閉じタグを挿入します。
strHTML = strHTML & "</tbody>" & vbCrLf & "</table>"
'HTMLタグを指定のセルへ出力します。
Range("F2") = strHTML
End With
'終わったのが分かるようにメッセージを出します。
MsgBox "表のHTML変換が完了しました!"
End Sub
VBAを設定する
VBAを設定していきましょう。
テーブルタグへ変換したい範囲を指定します。
arrTemp = Range("A1:C11")
項目のTHタグにしたい行番号を指定します。指定しな場合は0にしてください。
intSelectTHrow = 1
項目のTHタグにしたい列番号を指定します。指定しな場合は0にしてください。
intSelectTHcol = 0
HTMLタグ出力先となるセルを指定します。
Range("F2") = strHTML
VBAの実装
VBAの実装方法については
VBAの実装手順
をご参照ください。
VBAを実行する
VBAを実行してみましょう。
“表のHTML変換が完了しました!”と表示されたら完成です。
HTMLタグが指定セルへ出力されていますね!
出力されたHTMLタグを表示させてみても問題ありませんね!
番号 | 商品名 | 売上 |
---|---|---|
1 | にんじん | 1000 |
2 | じゃがいも | 2000 |
3 | きゃべつ | 1400 |
4 | たまねぎ | 1800 |
5 | だいこん | 500 |
6 | さといも | 500 |
7 | ながいも | 1500 |
8 | しいたけ | 3000 |
9 | まつたけ | 10000 |
10 | べにいも | 1800 |
項目のTHタグを変更してみましょう。項目としたい列番号を1列目とし指定します。
intSelectTHcol = 1
以下実行結果です。1列目も項目として表示されましたね!
番号 | 商品名 | 売上 |
---|---|---|
1 | にんじん | 1000 |
2 | じゃがいも | 2000 |
3 | きゃべつ | 1400 |
4 | たまねぎ | 1800 |
5 | だいこん | 500 |
6 | さといも | 500 |
7 | ながいも | 1500 |
8 | しいたけ | 3000 |
9 | まつたけ | 10000 |
10 | べにいも | 1800 |
VBAの説明
VBAについて説明をします。
テーブルの開始タグを追加します。
strHTML = "<table>" & vbCrLf & "<tbody>" & vbCrLf
アクティブであるシートを対象にします。
With ActiveSheet
存在する行数分処理を繰り返します。
For i = LBound(arrTemp, 1) To UBound(arrTemp, 1)
TRタグを追加します。
strHTML = strHTML & "<tr>" & vbCrLf
存在する列数分処理を繰り返します。
For j = LBound(arrTemp, 2) To UBound(arrTemp, 2)
TH指定箇所になったかどうか判定します。
If i = intSelectTHrow Or j = intSelectTHcol Then
指定行数にTHタグを挿入します。
strHTML = strHTML & "<th>" & .Cells(i, j).Value & "</th>" & vbCrLf
セルの値ごとにTDタグを挿入します。
Else strHTML = strHTML & "<td>" & .Cells(i, j).Value & "</td>" & vbCrLf
TRタグを挿入します。
strHTML = strHTML & "</tr>" & vbCrLf
テーブルの閉じタグを挿入します。
strHTML = strHTML & "</tbody>" & vbCrLf & "</table>"
終わったのが分かるようにメッセージを出します。
MsgBox "表のHTML変換が完了しました!"
VBAの実装手順
実装手順は以下の通りです。
Excel側にVBAを実装していきます。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
さいごに
いかがでしょうか。
今回は、
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す