Excelで表を作成しておいて、テーブルタグを出力するネタは、そこそこの数はてなブックマークされています。
確かに便利な方法なのですが、実際にこの技を実務で試した方は、どれくらいいらっしゃるのでしょう。
この方法を実務で頻繁に使うとなると、少々面倒なのも事実だと思うのです、私は。自分で紹介しておいてアレですが。
かといって、ExcelからHTMLを出力するツールをインストールしたりするのはちょっと、というケースもあります。
この方法と同じレベルでよいのなら、ユーザー定義関数を作成するという方法が考えられますので、その方法をご紹介しておきます。
Function TableRowSrc(objRng As Range, Optional lngTH As Long) As String
Dim lngCnt As Long
Dim lngLop As Long
Dim strRet As String
lngCnt = objRng.Count
strRet = ""
strRet = strRet & "<tr>"
For lngLop = 1 To lngCnt
Select Case lngTH
Case 1
strRet = strRet & "<th>" & objRng(lngLop).Text & "</th>"
Case 2
If lngLop = 1 Then
strRet = strRet & "<th>" & objRng(lngLop).Text & "</th>"
Else
strRet = strRet & "<td>" & objRng(lngLop).Text & "</td>"
End If
Case Else
strRet = strRet & "<td>" & objRng(lngLop).Text & "</td>"
End Select
Next lngLop
strRet = strRet & "</tr>"
TableRowSrc = strRet
End Function第1引数にはHTMLにしたいセル範囲1行を指定します。
第2引数は、「1」を指定すると1行全部がTHタグのソース、「2」を指定すると1列目だけがTHタグで残りの列がTDタグのソース、何も指定しないと1行全部がTDタグのソースを、それぞれ返してくれます。
▼サンプルファイル(003744.xls 28KByte)ダウンロード
サンプルファイルのF列に第2引数に「1」「2」を指定した例と、何も指定していない例を入力してありますのでご確認ください。
処理内容は「lngCnt = objRng.Count」で選択されたセル範囲の個数を変数に格納しておいて、その個数の回数だけFor Nextループを回します。
ループ処理の中で、THタグまたはTDタグでセルの値を括るという処理を行い、その際第2引数で処理を分岐しています。
セルの値といっても、このユーザー定義関数が使われるケースを想像すると、値そのものよりは書式も含んだデータを必要とするでしょうから、「objRng(lngLop).Value」ではなく「objRng(lngLop).Text」としています。
THタグよりもTDタグを必要とすることのほうが多いでしょうから、引数lngTHにOptionalキーワードをつけて省略可能にしてあります。
このユーザー定義関数を使って出力されたソースをテキストエディタなどに貼り付け、前後をTABLEタグで括れば、表ができあがります。
- Newer:PowerPointはMDIからSDIに
- Older:WEEKDAY関数の機能アップ−Excel2010
Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » テーブルタグを出力するユーザー定義関数