- 締切済み
エクセルVBAを使ってタグを入れたい
エクセルのVBAで、<p>~</p>、<p> </p>、<br />のタグを入れたい! A1のセルには・・・ ----------------------------------------------- 今日は、良い天気ですね。 あなたの好きな食べ物は、 何ですか? 私は、野菜料理が好きです。 ----------------------------------------------- このようにあります。 これをエクセルVBAでB列に以下のように入れたいです。 ----------------------------------------------- <p>今日は、良い天気ですね。</p> <p>あなたの好きな食べ物は、<br /> 何ですか?</p> <p> </p> <p>私は、野菜料理が好きです。</p> ----------------------------------------------- ちなみに、A列には各セルに文章があります。 どなたかVBAの書き方を教えていただけないでしょうか? よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- xls88
- ベストアンサー率56% (669/1189)
>No.3 この回答への補足 >コンパイルエラー: >プロシーシャの外では無効です。 Sub~End Subの中に入れてください。 Sub test() ・ ・ここにコピペ ・ End Sub あとbrタグの書き方が間違っていたので訂正してください。 誤:</br> 正:<br /> ><p>こんにちは、<br /> >もうすぐ、オリンピックがはじまりますね。</p> ><p> </p> ><p>日本は、メダルをいくつ取れるのか・・・?<br /> ><p>すごく楽しみですね。</p> ><p> </p> ><p>皆さんも一緒に応援しましょう。</p> 補足提示例で、2度目のbrタグの次行では頭に<p>があります。 ここは <p>日本は、メダルをいくつ取れるのか・・・?<br /> すごく楽しみですね。</p> ではないのですか?
- xls88
- ベストアンサー率56% (669/1189)
提示例限定なら下記でいけそうです。 ただし空行すべて<p> </p>になります。 (例1) Dim v As Variant Dim i As Long v = Split(Range("A1").value, vbLf) For i = LBound(v) To UBound(v) If v(i) = "" Then v(i) = "<p> </p>" Else If i < UBound(v) Then If v(i + 1) <> "" Then v(i) = "<p>" & v(i) & "</br>" v(i + 1) = v(i + 1) & "</p>" i = i + 1 Else v(i) = "<p>" & v(i) & "</p>" End If Else v(i) = "<p>" & v(i) & "</p>" End If End If Next Range("A1").value = Join(v, vbLf) <br />を付けるのは、行文末に「、」が有る時 とかもう少し条件を補足してください。
補足
回答ありがごうございます。 今試してみたのですが、エラーがでました。 コンパイルエラー: プロシーシャの外では無効です。 と表示されました。 また、<br />ですが、1回の改行では、<br />とし、一行まるまる空いている場合は、<p> </p>とします。 例 こんにちは、 もうすぐ、オリンピックがはじまりますね。 日本は、メダルをいくつ取れるのか・・・? すごく楽しみですね。 皆さんも一緒に応援しましょう。 この場合は <p>こんにちは、<br /> もうすぐ、オリンピックがはじまりますね。</p> <p> </p> <p>日本は、メダルをいくつ取れるのか・・・?<br /> <p>すごく楽しみですね。</p> <p> </p> <p>皆さんも一緒に応援しましょう。</p> こんな感じです。 よろしくお願いします。
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
No.1です。置換の機能を使っても、No.1と同じようなことができます。こちらのほうが少し早いかも。 A1セルにカーソルを置いて「置換」のダイアログを起動(Ctrl+H)。「検索する文字列」にカーソルを置いて、キーボードで「Ctrl+J」を「1回だけ」入力。この際、見た目では、押しても何も入力されず変化がないように見えますが、見えない何かが入力されているので気にしない。次に、「置換後の文字列」で「</p>」→「Ctrl+J」→「<p>」と入力。最後に、「すべて置換」(Alt+A)を実行。
お礼
回答ありがとうございます。 参考にさせていただきます。
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
VBAにしろ何にしろ、様々な種類のあるHTMLの記号を「完璧に」挿入するには、条件の設定に手間がかかります。 そこで、完璧に一発で作ることは諦めるのが吉かも。「<p>」と「</p>」をたくさん使用されるようですので、これを数式でサッと付加し、その後、数の少ない記号を手作業で付加されては?隣のセルにでも、次式を入力。 ="<p>"&substitute(a1," ","</p> <p>")&"</p>" ※文字列や式の中に改行を入れるには、キーボードでAlt+Enterを押す ※数式の確定後、そのセルの書式を「折り返して全体を表示する」に設定 これで「<p>」と「</p>」がたくさんくっつくので、計算結果をコピーしてどこか別のセルに、値のみ貼り付け。あとはお好きに編集して数の少ない記号を付けてください。
お礼
回答ありがごうございます。 やっぱ難しいんですね。
お礼
xls88さん、すいません。 それと、セルに入っている文章ですが、セルA1だけでなく、A列全体に入っていて、それをB列に入れたいです。 v = Split(Range("A:A").Value, vbLf)で試したんですが、エラーが出てしまいます。大変申し訳ありませんが、ご教授いただけませんでしょうか。 よろしくお願いします。
補足
回答ありがとうございました。 上手にできました。 ただ、空行すべて<p> </p>ってやっぱおかしいですよね。 そこで、大変申し訳ないのですが、空白2行以上続く場合に<p> </p>にするには、どうすればいいのか教えていただけないでしょうか?