セル内の文字色や太字をfont color=”#FF0000″のようにHTML化する

マクロ / VBA , , , ,

文字に色を付けていたり、太字にしたものを判別し、それをHTMLタグ化するVBAを作成しました。

例:赤字や緑字、太字の文章を
HTMLタグ化します

セル内に複数の文字色や太字部分が複数あっても問題なくHTML化します。

VBAコード

使い方

上記のコードを標準モジュールに貼り付けしてください。

HTML_Changeを走らせると、選択したセル(範囲OK)の文字色と太字をHTML化させます。

文字色はRGBで表現しますので何色でも問題ありません。黒(標準)の場合は特に何もしません。

コードの説明

  1. 一文字ずつ文字色をチェック
  2. 黒以外なら、その後何文字後まで同色か?
  3. その文字列を<font color=”#FF0000″>~~</font>で囲む
  4. 太字<B>も同様に一文字ずつチェック

流れはこんな感じです。

あと細かいコードの説明としては

Charactersプロパティ

これがセル内の一文字ずつ見る方法ですね。
Charactersプロパティは、セルに入力された文字列の一部を参照することが出来ます。セルに入力された文字列の何文字目(Start)から何文字(Length)分の文字を表せますが、セル内に数値や数式が入っているとエラーを返します。空白はOK。

構文 Object.Characters(Start, Length)

設定項目内容
ObjectRangeオブジェクト
Start参照したい文字列の先頭位置を指定します。省略した場合は1
Length参照したい文字数を指定します。省略した場合はStart以降の全文字列

参照するだけでなく、指定した部分に別の文字を設定する事もできます。
あいうえお →(3文字目を”ん”にしたい) あいえお のように。

A1に「あいうえお」が入っていた場合。

A1セルの3文字目から1文字だけを”ん”に変更します。

テキストだけでなく文字装飾も出来るのでこれを活用し、以下のようなコードにすれば文字の色を判別できます。

 

Colorプロパティ

また、ややこしいのがColorプロパティです。

Colorプロパティはオブジェクトに応じて適用する色を設定します。色は、RGB関数によって作成された値です。

で、RGB関数とは

色のRGB値を表す長整数型 (Long) の値を返します。
構文
RGB(red, green, blue)
red:RGBのR(赤)の割合を0~255の整数で指定します
green:RGBのG(緑)
の割合を0~255の整数で指定します
blue:RGBのB(青)
の割合を0~255の整数で指定します

Excelヘルプ

R×256 + G×256 + B×256×256 という計算の結果の数値で表しています。
紫でしたら「112+48×256+160×256×256」で「10498160」 となります。

ですのでHTMLの文字色にする場合、16進数の”#FF0000″のように置き換える必要があります。そこで以下のコードとしています。

Comment

  1. ふぅ より:

    初めまして。こちらを参考にさせていただき、希望のものが作れそうなのですが、文字色+太字ではなく、太字+斜体のような二重装飾は可能なのでしょうか?

    • isakat より:

      はい、可能です。
      BoldCHKを改変してもらって
      Font.BoldをFont.Italicにすれば太字じゃなく斜体となります。
      あとはHTMLのに変更するなど改変していけば使えると思います。

      • ふぅ より:

        返信ありがとうございます。表現が間違っておりました。
        文字色+斜体+取り消し線といった3重になる場合はどのように変更すれば可能でしょうか。それとも3重となると難しいのでしょうか。

        • isakat より:

          3重も可能ですがちょっとややこしい改変になりそうですね。
          BoldCHK内で最終的にBoldCHKに結果を返すところで、ItalicCHKなるプロシージャを作って、
          そこで斜体判定する、という感じですかね。
          ただ、
          あ い う え お
          とあって、

          あ い
          は色文字

            い う
          は太字

              う え
          は斜体、というようなそれぞれで色・太字・斜体が重なったり重ならなかったりを考えるとややこしそうです。

          • ふぅ より:

            返信ありがとうございます。
            タグが重なった場合がかなりややこしく対応できそうにないので、あきらめることにします。

コメントをどうぞ

メールアドレスが公開されることはありません。

  • ▼お小遣い稼ぎしませんか?▼ 日々の生活にhappyをプラスする|ハピタス

    クレジットカード・FX口座を作るだけで簡単に3万円GETです。一切支出はありません。

NA() グラフ XLSTART テンプレート 偏差値 VLOOKUP 検索 無料 セル選択 作業効率UP TODAY HLOOKUP 条件付き書式 印刷 COUNTIF 図形 SUM 変換 ユーザー定義関数 目標 バーコード STDEV フロー図 COLUMN コピペ DATE 置換 ワイルドカード 日付 SUMIF
  • 関西在住の30代サラリーマン。事務職で毎日Excelと戯れています。
    システム導入なんて資金が無い!Excelでなんとかやりたい零細中小の社長さん・事務員さんの力になればと思います。
    詳しいプロフィール


PAGE TOP ↑