EXCEL表をTableタグ(HTML)に変換する
HTMLで表(Tableタグ)を記述するのは、結構骨の折れる作業です。はてなブログでは視覚的に作表する機能がありませんので、地道にHTMLで記述する(または、はてな記法で記述する)しかありません。
そもそもHTMLエディターにしたって、表作成には特化していないのですから、結構面倒だと思います。(各種計算やオートフィル等の機能がないため)
なので、HTML作成において表(Table)作成の部分だけでもEXCELでやってしまおうというのが今回の記事の趣旨です。
まず、下記のマクロをコピペして標準モジュール等に貼り付けして下さい。あと、クリップボードとデータのやり取りを行うのでVBEでMicrosoft Forms 2.0 Object Libraryを参照設定しておいて下さい。(詳細なやり方は記事末尾のリンクからどうぞ)
----------------------
Sub 選択範囲をTableタグに変換しクリップボードに出力()
'Microsoft Forms 2.0 Object Libraryを参照設定して下さい
'正方形または長方形のような連続した選択範囲とする
Dim i As Long
Dim j As Long
Dim V As String
Dim rh As Integer
Dim ch As Integer
Dim myLib As New DataObject
rh = MsgBox("選択範囲の上端の行を" & vbCrLf & "見出しにしますか?", vbYesNo)
ch = MsgBox("選択範囲の左端の列を" & vbCrLf & "見出しにしますか?", vbYesNo)
V = "<table>" & vbCrLf
For i = Selection.Row To Selection.Rows(Selection.Rows.Count).Row
For j = Selection.Column To Selection.Columns(Selection.Columns.Count).Column
If i = Selection.Row And rh = 6 Then '見出し行の処理。データを<th></th>で囲む
If j = Selection.Column Then '選択範囲の左端であれば冒頭に<tr>を追加
V = V & "<tr>" & vbCrLf & "<th>" & Cells(i, j).Value & "</th>"
ElseIf j = Selection.Columns(Selection.Columns.Count).Column Then '選択範囲の右端であれば末尾に</tr>を追加
V = V & "<th>" & Cells(i, j).Value & "</th>" & vbCrLf & "</tr>" & vbCrLf
Else '左端と右端以外の処理
V = V & "<th>" & Cells(i, j).Value & "</th>"
End If
Else '見出し行以外の処理。データを<td></td>で囲む
If j = Selection.Column Then '選択範囲の左端であれば冒頭に<tr>を追加
If ch = 6 Then '見出し列の処理。データを<th></th>で囲む
V = V & "<tr>" & vbCrLf & "<th>" & Cells(i, j).Value & "</th>"
Else '見出し列以外の処理。データを<td></td>で囲む
V = V & "<tr>" & vbCrLf & "<td>" & Cells(i, j).Value & "</td>"
End If
ElseIf j = Selection.Columns(Selection.Columns.Count).Column Then '選択範囲の右端であれば末尾に</tr>を追加
V = V & "<td>" & Cells(i, j).Value & "</td>" & vbCrLf & "</tr>" & vbCrLf
Else '左端と右端以外の処理
V = V & "<td>" & Cells(i, j).Value & "</td>"
End If
End If
Next j
Next i
V = V & "</table>"
myLib.SetText V '変数の値をDataObjectに格納する
myLib.PutInClipboard 'DataObjectのデータをクリップボードに格納する
MsgBox "Tableタグ(HTML)をクリップボードに" & vbCrLf & "出力しました!" & vbCrLf & vbCrLf & _
"ブログなどでお好みの位置にペースト" & vbCrLf & "して下さい。"
End Sub
----------------------
マクロを使用する準備が終わったら、Tableタグに変換したい表を選択してマクロを実行します。
こんな感じでクリップボードにHTMLが出力されるので、試しにはてなブログに貼り付けてみましょう。
「例えばここにTableを貼り付ける↓」という文字の下に、Tableタグを貼り付けてみます。HTML編集モードに切り替えて、マクロから出力したTableタグをペーストします。
見たまま編集モードに戻すと、このように表が挿入されていることが確認できます。
見たまま編集モードでは表の大きさを変更(表の四隅をドラッグ)したり、文字色・文字の大きさ等を変更できます。
表の中に画像を挿入することもできます。
ちなみにマクロから出力したTableには罫線などの装飾が入っていませんが、ブログ側のスタイルの定義によって罫線等が自動的に入ります。
マクロから出力したTableタグをメモ帳などに貼り付け、拡張子を.htmlで保存したものをブラウザで開くと、プレーンなTableが表示されるのみです。(言い換えればプレーンなTableを提供するマクロだと思って下さいませ)
最小限の機能として、見出しの有無のみを選択できるようにはしました。
上端の行と左端の列を見出しにした場合はこんな感じ
Test | Test | Test | Test |
---|---|---|---|
Test | Test | Test | Test |
Test | Test | Test | Test |
Test | Test | Test | Test |
上端の行のみ見出しにした場合はこんな感じ
Test | Test | Test | Test |
---|---|---|---|
Test | Test | Test | Test |
Test | Test | Test | Test |
Test | Test | Test | Test |
左端の列のみ見出しにした場合はこんな感じ
Test | Test | Test | Test |
---|---|---|---|
Test | Test | Test | Test |
Test | Test | Test | Test |
Test | Test | Test | Test |
マクロの標準モジュールへの貼り付け方法はこちら
参照設定の方法はこちら