Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » テーブルタグを出力するユーザー定義関数

テーブルタグを出力するユーザー定義関数

対象:Excel2002, Excel2003, Excel2007, Excel2010

Excelで表を作成しておいて、テーブルタグを出力するネタは、そこそこの数はてなブックマークされています。

確かに便利な方法なのですが、実際にこの技を実務で試した方は、どれくらいいらっしゃるのでしょう。

この方法を実務で頻繁に使うとなると、少々面倒なのも事実だと思うのです、私は。自分で紹介しておいてアレですが。

かといって、ExcelからHTMLを出力するツールをインストールしたりするのはちょっと、というケースもあります。

[スポンサードリンク]

この方法と同じレベルでよいのなら、ユーザー定義関数を作成するという方法が考えられますので、その方法をご紹介しておきます。

▼TR一行の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タグで括れば、表ができあがります。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » テーブルタグを出力するユーザー定義関数

「ユーザー定義関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.