朧の.Netの足跡
問合せ先:support@oborodukiyo.info サイト内検索はこちら
エクセルVBA エクセルの表(テーブル)をHTMLファイルに書き出す





VBAでエクセルの表(テーブル)をHTMLファイルに変換するマクロを作ってみました。
ただ、スタイルを使用するようには作ってないので味気ないものです。
しかし、サンプルのVBAのネストされているFORループをやめて、各列ごとにスタイルを設定するようにすれば簡単に変更できます。



Option Explicit

'メインの処理用関数
Public Sub exportHTML()
    Dim fileName As String
    Dim fileNum As Integer
    Dim buf As String
    '最初にアクティブだったシート
    Dim ws As Worksheet
    'データがあると思われるセル範囲
    Dim dataRange As Range
    Dim rowStart As Integer
    Dim rowEnd As Integer
    Dim colStart As Integer
    Dim colEnd As Integer
    
    'ワークシートの行番号
    Dim i As Long
    Dim j As Long
    fileName = ThisWorkbook.Path & "\exportHTML.html"
    
    '最初にアクティブなシートにデータがあるとしてシートを記憶しておく
    Set ws = ActiveSheet
    'データ範囲を自動認識
    Set dataRange = ActiveCell.CurrentRegion
    'データ範囲をFORループで処理するために行番号と列番号の範囲を取得しておく
    rowStart = 1
    rowEnd = rowStart + dataRange.Rows.Count - 1
    colStart = 1
    colEnd = colStart + dataRange.Columns.Count - 1
            
    '空いているファイル番号を取得
    fileNum = FreeFile
    '書き込みでファイルを開く
    Open fileName For Output As #fileNum
    Print #fileNum, "エクスポートテーブル" & vbCrLf
    Print #fileNum, ""
    
    '処理の中核
    For i = rowStart To rowEnd
        '各行の書き出し処理
        buf = ""
        For j = colStart To colEnd
            'セルの表示されている形式で書きだすのでTextプロパティを使っています。
            If i <> rowStart Then
                buf = buf & ""
            Else
                '1行目は列見出しにする
                buf = buf & ""
            End If
        Next j
        
        buf = buf & "
" & vbCrLf '1行を書き込む Print #fileNum, buf Next i 'テーブルとHTMLの終了タグを書き込む Print #fileNum, "
" & dataRange(i, j).Text & "" & dataRange(i, j).Text & "
" & vbCrLf Print #fileNum, "" Close #fileNum '変数の開放 Set dataRange = Nothing Set ws = Nothing End Sub








良いやや良い普通やや悪い悪い

投稿日時評価コメント