[三流君] −−> [VBAで楽しく] −−> [バックナンバー一覧]
−−> No.082 背景色、フォントカラーをHTMLの表にしてみる

背景色、フォントカラーをHTMLの表にしてみる

メルマガ発行内容

<背景色、フォントカラーをHTMLの表にしてみる>

どうも、三流プログラマーのKen3です。 今回は、前回の続きで、 Excelの表をHTMLの表にしてみたいと思います。 標準でHTML形式で保存があるけど、練習を兼ねて。 http://www.ken3.org/p/lzh/office-017.lzh に今回のサンプル保存されてます。 あわせてみてください。

/* * 1.追加機能や足りない機能、使っていっての要望をまとめる */

前回、表の基本形を書き込めました。 なんとか、右寄せ左寄せ、中央寄せのパターンを書きました。 まだまだ、機能的に足りないだけど、 今回は、 フォントの色、 ^^^^^^^^^^^^ 背景色 ^^^^^^ を変えてみたいと思います。

/* * 2.初期捜査、初動捜査 */

いつものマクロ記録で、フォント関係を記録してみます。 プロパティ、メソッドの探り方 マクロ記録とF1のHelpを使う http://www.ken3.org/vba/excel-help.html も、ヒマな時、のぞいてください。 話を戻してと、 フォントを赤にして、背景は黄色。 なんて操作をマクロ記録すると、
Sub Macro1()
    Range("B2:C4").Select
    Selection.Font.ColorIndex = 3
    With Selection.Interior
        .ColorIndex = 6
        .Pattern = xlSolid
    End With
    Range("G6").Select
End Sub
と記録されました。 う〜ん、、、.ColorIndex = 色番号かぁ。 これだと、色番号を3を赤とか変換するの? それは、大変だなぁ。 ヘルプでColorIndex プロパティをみる。 で、 ポイントがあって(たまたま、見つけたんだけど) 関連項目を押します。 すると、Color プロパティが見つかり(ホントたまたま) Font フォントの色。 Interior 影付きのセルの影の色、または描画オブジェクトの塗りつぶしの色。 使用例 次の使用例は、グラフ 1 の数値軸の目盛ラベルの色を設定します。 Charts("Chart1").Axes(xlValue).TickLabels.Font.Color = _ RGB(0, 255, 0) .Color = RGB(〜 これ、使えそうですよね。 Debug.Print "フォントの色" & Hex(Range("B2").Font.Color) Debug.Print "背景色" & Hex(Range("B2").Interior.Color) と確認すると、 フォントの色FF (赤色) 背景色FFFF (黄色) あれ、RGBは赤緑青だよな、サンプルを青のデータにしてみよう。 フォントの色FF0000 が青だ。 背景色FF00が緑 で、赤がFF ってことは、ブルー、グリーン、レッドの順かぁ、なんかウソくさいけど(笑) よし、これをHTML書き込みのルーチンに入れますか。
Sub Main()

    'Application.InputBoxでセルを選択させる
    Dim objTARGET As Range '選択されたセルの集合
    Set objTARGET = Application.InputBox(prompt:="セルを選択", Type:=8)
    If IsEmpty(objTARGET) Then 'キャンセルが押されたかチェックする
        MsgBox "キャンセルが押されました"
        Exit Sub
    End If
    
    'ファイル名を作成 ファイル名は自分のパス+\test.html
    Dim strFNAME As String   'ファイル名保存用
    strFNAME = ThisWorkbook.Path & "\test.html" 'ファイル名を作る

    'テーブルデータを作成する
    Call MAKE_HTML_TABLE(strFNAME, objTARGET)

    'できたファイルをIEで表示して確認する
    Call IE_OPEN_URL(strFNAME)  'ファイル名を渡す

    '終わりの挨拶
    MsgBox strFNAME & "を作成しました"
    
End Sub
'ファイル名とセルの範囲RANGEを受け取り、 'ファイルを開きHTMLのテーブルを作成する
Sub MAKE_HTML_TABLE(strFNAME As String, objHANI As Range)

    Dim strCOLOR As String
    Dim strR As String
    Dim strG As String
    Dim strB As String

    'ファイルをオープンする
    Dim FNO      As Integer  'ファイル番号
    FNO = FreeFile '空いてるファイル番号を取出す
    Open strFNAME For Output As #FNO  'テキストファイルを新規作成

    'HTMLのヘッダーを書く
    Print #FNO, "<HTML><HEAD><TITLE>"
    Print #FNO, "テーブル作成してみました"
    Print #FNO, "</TITLE></HEAD>"
    Print #FNO, "<BODY>"
    Print #FNO, "<TABLE border=1>"  'テーブルの開始

    '行、列でループを作る
    Dim y As Integer
    Dim x As Integer
    For y = 1 To objHANI.Rows.Count         '行のループ
        Print #FNO, "<TR>"  '行の開始タグ
        For x = 1 To objHANI.Columns.Count  '列のループ
            'ALIGNを調べて書き込む
            Select Case objHANI.Cells(y, x).HorizontalAlignment
                Case xlRight:
                    Print #FNO, "<TD ALIGN='RIGHT'";
                Case xlLeft:
                    Print #FNO, "<TD ALIGN='LEFT'";
                Case xlCenter:
                    Print #FNO, "<TD ALIGN='CENTER'";
                Case Else  'その他設定無しのとき
                    Print #FNO, "<TD";
            End Select
            'バックカラーを調べる
            strCOLOR = Right("000000" & _
                             Hex(objHANI.Cells(y, x).Interior.Color), 6)
            If strCOLOR <> "FFFFFF" Then  '白以外の時処理
                strR = Mid(strCOLOR, 5, 2)
                strG = Mid(strCOLOR, 3, 2)
                strB = Mid(strCOLOR, 1, 2)
                Print #FNO, " BGCOLOR=#" & strR & strG & strB;
            End If
            Print #FNO, ">"; 'タグを閉じる
            'フォントの色を調べる
            strCOLOR = Right("000000" & Hex(objHANI.Cells(y, x).Font.Color), 6)
            If strCOLOR <> "000000" Then  '黒以外の時処理
                strR = Mid(strCOLOR, 5, 2)
                strG = Mid(strCOLOR, 3, 2)
                strB = Mid(strCOLOR, 1, 2)
                Print #FNO, "<Font Color=#" & strR & strG & strB & ">";
            End If
            'セルの中身を書き込む
            Print #FNO, objHANI.Cells(y, x).Value;
            'フォントのタグを閉じる
            If strCOLOR <> "000000" Then  '黒以外の時処理
                Print #FNO, "</Font>";
            End If
            'タグを閉じる
            Print #FNO, "</TD>";
        Next x
        Print #FNO, "</TR>"  '行の終了タグ
    Next y

    'HTMLのタグを閉める
    Print #FNO, "</TABLE>"
    Print #FNO, "</BODY></HTML>"

    'ファイルをクローズする
    Close #FNO

End Sub
'URLを受け取り、IEを起動、URLを開く
Sub IE_OPEN_URL(strURL As String)

    'IEを起動して、表示
    Dim objIE    As Object  'IEオブジェクト参照用
    
    'インターネットエクスプローラーのオブジェクトを作る
    Set objIE = CreateObject("InternetExplorer.application")
    
    objIE.Visible = True '見えるようにする(お約束)
    objIE.Navigate strURL  '文字列で指定したURLに飛ぶ

End Sub
ポイントは、 HTMLの表のバックカラー BGCOLOR=#FFFFFFと フォントカラー <FONT COLOR=#FFFFFF を使用して、 .Font.Color のフォントカラーを変更、 .Interior.Color の背景色をそれぞれ変更してます。 RIGHT("000000" & HEX としてるのは、 Hexで16進数に変換して頭に0を足す(埋めて) その後、左からデータを取って、6桁の16進文字列にしてます。 あとは、簡単な文字列の分解処理で、 strR = Mid(strCOLOR, 5, 2) strG = Mid(strCOLOR, 3, 2) strB = Mid(strCOLOR, 1, 2) と、色の値を取り出します。 それを、強引に組み合わせて、書き込んでます。 ※なんか、ソースが長くなってきたので、分割しないとね。

/* * 4.終わりの挨拶 */

さて、テストしますか。 まぁ、それなりに動いてます。 が、 まだまだ、ですね。 プロパティの探り方、なんとなくわかったと思います。 次は、難しそうな結合されたセルの取り扱いですね。。。難しそう(笑) http://www.ken3.org/p/lzh/office-017.lzh に今回のサンプル保存されてます。 あわせてみてください。 プログラム作りは簡単で面白いなぁと感じるような 解説/メールマガジンを書きたいと思ってますが、 なかなかうまくは行いかないね。。 拾い読みして、 1つでも何かの参考となれば幸いです。


ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

種類別のリンク や 広告など

気になったジャンル↓を選択してください。

人気記事(来場者が多いTOP3):
[VBAでIE,WebBrowserを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[Access から Excel 連携 CreateObject("Excel.Application")]・・・AccessからExcelを操作したりデータの書き出しなどです
[VBAでOutlookの操作 CreateObject("Outlook.Application" )]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。

Excel関係:
[Excel UserFormを操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
[Excel関係 関数、その他]・・・その他Excel関係です

Access関係:
[Access UserForm/サブフォーム 操作]・・・アクセスでフォームを使ったサンプルです
[Access レポート操作]・・・レポートを操作してみました
[Access クエリーやその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

その他:VBAの共通関数やテキストファイルの操作など
[VBAでテキストファイル(TextFile)の操作]・・・普通のテキストファイルを使ったサンプルです
[VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます

開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う]

仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力]

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [VBAやASPのサンプルコード]/ 広告-[通販人気商品の足跡]



[三流君(TOP ken3.org へ戻る)] / [VBA系TOPへ] / [VBA系バックナンバー目次へ移動]