- ベストアンサー
エクセルマクロで下線や太字
エクセルの入力データで特定文字間に下線を引いたり、太字にしたりしたいと思っていますが可能かも分かりません。 御教授願います。 なお、1つ1つ手動にて下線の設定をするのではなく自動で実施したいと思っています。 例.「A1」→「○○<u>△△</u>■■」 以上の場合に「△△」を下線を引いたり、太字にし「<u>」「</u>」を削除した内容を「B1」に入力したい。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
当方、エクセルマクロの初心者ですが、下手なマクロでよければ以下のようなマクロコードをコピペして見てください。 一応、テスト済みです。 Sub MacroTest() Dim Astr, Bstr As String Dim Row, Ls, St, Et As Integer Row = 1 'スタート行 Do Range("A" & Trim(Str(Row))).Select Astr = ActiveCell If Astr = "" Then Exit Do Ls = Len(Astr) St = InStr(Astr, "<u>") + 3 If St > 3 Then Et = InStr(Astr, "</u>") - 1 Bstr = Left(Astr, St - 4) Bstr = Bstr & Mid(Astr, St, Et - St + 1) Bstr = Bstr & Right(Astr, Ls - Et - 4) Range("B" & Trim(Str(Row))).Select ActiveCell = Bstr With ActiveCell.Characters(Start:=St - 3, Length:=Et - St + 1).Font .FontStyle = "太字" .Underline = xlUnderlineStyleSingle End With Else Range("B" & Trim(Str(Row))) = Astr End If Row = Row + 1 Loop End Sub わかりやすいコードだと思いますので、適当にアレンジしてください。 ご要望の結果が得られれば幸いです。
その他の回答 (4)
- KenKen_SP
- ベストアンサー率62% (785/1258)
> 誤解を招いているようで、申し訳ありません。 誤解してないと思いますが? 試しに、メモ帳に下記のように一度入力し、それをコピーしてから、 新規ブックにでもペーストしてみて下さい。 <u>Sample</u><b>TEXT</b> メモ帳のテキストなのだから、書式のない単なるプレーンテキスト のはずですよね? 従って、そのままセルにペーストされるはず。 <u>Sample</u><b>TEXT</b> この通りです。 次に、<html>~</html>を補完して、 <html><u>Sample</u><b>TEXT</b></html> としたものを同じようメモ帳に入力し、同じようにペーストして みて下さい。 これも単なるプレーンテキストです。が、結果は、先ほどと違って、 表示が変わっていることに気がつくと思います。 #2 はこの Excel の特性を利用したコードです。別に Html ソース を書きだすために書いたものではありません。Excel に Html を 解釈させ、Html として表示させるために書いたものです。 単純にセルのコピーではダメなんです。セルの内容に <html> の おまじないを加え、クリップボードを経由させることで Excel に 書式を変更させる。。という手法です。 とりあえず、お試しを。
- pbforce
- ベストアンサー率22% (379/1719)
恐らく、HTMLエディタを0から作るぐらいの労力を費やせば可能かと思います。 入力されたら(セルの内容が変化したら)変化したセルの内容を取得して、タグの部分を検索して、当てはまるタグに対応する処理を実行し、表示用のセルに書き込む。 と言う手順になると思います。
- KenKen_SP
- ベストアンサー率62% (785/1258)
ロジックとしては、セルの内容の頭に<html>、末尾に</html> を付加した 文字列をコピーし、セルに貼り付ければ OK です。 VBA で全部やるならこんな感じ。 VBE の [ツール]-[参照設定] で [Microsoft Forms2.0 Object Library] にチェックを入れ、標準モジュールに下記コードをコピペ。 A 列のセルを範囲選択して、マクロ実行です。 Sub SampleProc() ' // 要参照設定: Microsoft Forms2.0 Object Library Dim D As DataObject Dim r As Range Dim sHtml As String Set D = New DataObject For Each r In Selection.Cells sHtml = "<html>" & r.Text & "</html>" D.SetText sHtml D.PutInClipboard r.Offset(0, 1).PasteSpecial Next Set D = Nothing End Sub
補足
ご回答ありがとうございます。 入力された文字からhtmlのソースを作るのではなく、htmlのソースがエクセルに入力されていて、そのセルの隣にweb上で表示されるように、<u>と</u>の間の文字は下線を引くことをさせてたいと考えています。なお、処理させたいのは下線と太字のみです。 説明の仕方が悪く、誤解を招いているようで、申し訳ありません。
- pbforce
- ベストアンサー率22% (379/1719)
HTMLエディタの機能をエクセルに実装したいと言うことですか?
補足
早速のご回答ありがとうございました。 HTML形式で入力されているデータをHTML形式で表示されたのと同様な表示形式にしてエクセル表示したいと思っています。 以上、よろしくお願いします。
補足
何回もありがとうございます。 下線と太文字だけですが、無理に近い話でしょうか? また、セルの内容が変化したら、即、実施しようとも思っていません。