プロが教える店舗&オフィスのセキュリティ対策術

エクセルの入力データで特定文字間に下線を引いたり、太字にしたりしたいと思っていますが可能かも分かりません。
御教授願います。
なお、1つ1つ手動にて下線の設定をするのではなく自動で実施したいと思っています。

例.「A1」→「○○<u>△△</u>■■」
以上の場合に「△△」を下線を引いたり、太字にし「<u>」「</u>」を削除した内容を「B1」に入力したい。

A 回答 (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

わかりやすいコードだと思いますので、適当にアレンジしてください。
ご要望の結果が得られれば幸いです。
    • good
    • 0

> 誤解を招いているようで、申し訳ありません。



誤解してないと思いますが?

試しに、メモ帳に下記のように一度入力し、それをコピーしてから、
新規ブックにでもペーストしてみて下さい。

<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 に
書式を変更させる。。という手法です。

とりあえず、お試しを。
    • good
    • 0

恐らく、HTMLエディタを0から作るぐらいの労力を費やせば可能かと思います。



入力されたら(セルの内容が変化したら)変化したセルの内容を取得して、タグの部分を検索して、当てはまるタグに対応する処理を実行し、表示用のセルに書き込む。

と言う手順になると思います。

この回答への補足

何回もありがとうございます。

下線と太文字だけですが、無理に近い話でしょうか?
また、セルの内容が変化したら、即、実施しようとも思っていません。

補足日時:2007/12/21 18:42
    • good
    • 0

ロジックとしては、セルの内容の頭に<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>の間の文字は下線を引くことをさせてたいと考えています。なお、処理させたいのは下線と太字のみです。
説明の仕方が悪く、誤解を招いているようで、申し訳ありません。

補足日時:2007/12/21 18:28
    • good
    • 0

HTMLエディタの機能をエクセルに実装したいと言うことですか?

この回答への補足

早速のご回答ありがとうございました。

HTML形式で入力されているデータをHTML形式で表示されたのと同様な表示形式にしてエクセル表示したいと思っています。

以上、よろしくお願いします。

補足日時:2007/12/21 16:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!