• 締切済み

エクセルVBAを使ってタグを入れたい

エクセルのVBAで、<p>~</p>、<p>&nbsp;</p>、<br />のタグを入れたい! A1のセルには・・・ ----------------------------------------------- 今日は、良い天気ですね。 あなたの好きな食べ物は、 何ですか? 私は、野菜料理が好きです。 ----------------------------------------------- このようにあります。 これをエクセルVBAでB列に以下のように入れたいです。 ----------------------------------------------- <p>今日は、良い天気ですね。</p> <p>あなたの好きな食べ物は、<br /> 何ですか?</p> <p>&nbsp;</p> <p>私は、野菜料理が好きです。</p> ----------------------------------------------- ちなみに、A列には各セルに文章があります。 どなたかVBAの書き方を教えていただけないでしょうか? よろしくお願いします。

みんなの回答

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

>No.3 この回答への補足 >コンパイルエラー: >プロシーシャの外では無効です。 Sub~End Subの中に入れてください。 Sub test() ・ ・ここにコピペ ・ End Sub あとbrタグの書き方が間違っていたので訂正してください。 誤:</br> 正:<br /> ><p>こんにちは、<br /> >もうすぐ、オリンピックがはじまりますね。</p> ><p>&nbsp;</p> ><p>日本は、メダルをいくつ取れるのか・・・?<br /> ><p>すごく楽しみですね。</p> ><p>&nbsp;</p> ><p>皆さんも一緒に応援しましょう。</p> 補足提示例で、2度目のbrタグの次行では頭に<p>があります。 ここは <p>日本は、メダルをいくつ取れるのか・・・?<br /> すごく楽しみですね。</p> ではないのですか?

torasan117
質問者

お礼

xls88さん、すいません。 それと、セルに入っている文章ですが、セルA1だけでなく、A列全体に入っていて、それをB列に入れたいです。 v = Split(Range("A:A").Value, vbLf)で試したんですが、エラーが出てしまいます。大変申し訳ありませんが、ご教授いただけませんでしょうか。 よろしくお願いします。

torasan117
質問者

補足

回答ありがとうございました。 上手にできました。 ただ、空行すべて<p>&nbsp;</p>ってやっぱおかしいですよね。 そこで、大変申し訳ないのですが、空白2行以上続く場合に<p>&nbsp;</p>にするには、どうすればいいのか教えていただけないでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

提示例限定なら下記でいけそうです。 ただし空行すべて<p>&nbsp;</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>&nbsp;</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 />を付けるのは、行文末に「、」が有る時 とかもう少し条件を補足してください。

torasan117
質問者

補足

回答ありがごうございます。 今試してみたのですが、エラーがでました。 コンパイルエラー: プロシーシャの外では無効です。 と表示されました。 また、<br />ですが、1回の改行では、<br />とし、一行まるまる空いている場合は、<p>&nbsp;</p>とします。 例 こんにちは、 もうすぐ、オリンピックがはじまりますね。 日本は、メダルをいくつ取れるのか・・・? すごく楽しみですね。 皆さんも一緒に応援しましょう。 この場合は <p>こんにちは、<br /> もうすぐ、オリンピックがはじまりますね。</p> <p>&nbsp;</p> <p>日本は、メダルをいくつ取れるのか・・・?<br /> <p>すごく楽しみですね。</p> <p>&nbsp;</p> <p>皆さんも一緒に応援しましょう。</p> こんな感じです。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

No.1です。置換の機能を使っても、No.1と同じようなことができます。こちらのほうが少し早いかも。 A1セルにカーソルを置いて「置換」のダイアログを起動(Ctrl+H)。「検索する文字列」にカーソルを置いて、キーボードで「Ctrl+J」を「1回だけ」入力。この際、見た目では、押しても何も入力されず変化がないように見えますが、見えない何かが入力されているので気にしない。次に、「置換後の文字列」で「</p>」→「Ctrl+J」→「<p>」と入力。最後に、「すべて置換」(Alt+A)を実行。

torasan117
質問者

お礼

回答ありがとうございます。 参考にさせていただきます。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

VBAにしろ何にしろ、様々な種類のあるHTMLの記号を「完璧に」挿入するには、条件の設定に手間がかかります。 そこで、完璧に一発で作ることは諦めるのが吉かも。「<p>」と「</p>」をたくさん使用されるようですので、これを数式でサッと付加し、その後、数の少ない記号を手作業で付加されては?隣のセルにでも、次式を入力。 ="<p>"&substitute(a1," ","</p> <p>")&"</p>" ※文字列や式の中に改行を入れるには、キーボードでAlt+Enterを押す ※数式の確定後、そのセルの書式を「折り返して全体を表示する」に設定 これで「<p>」と「</p>」がたくさんくっつくので、計算結果をコピーしてどこか別のセルに、値のみ貼り付け。あとはお好きに編集して数の少ない記号を付けてください。

torasan117
質問者

お礼

回答ありがごうございます。 やっぱ難しいんですね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのマクロ(VBA)の事で質問です。

    エクセルのマクロ(VBA)の事で質問です。 A列のA1からA100ぐらいまで、各セルに以下のような文章があるとします。 -------------------------------------------- A1 今日は、天気です。 明日も良い天気になるといいですね。 -------------------------------------------- A2 今日は野菜が安いです。 昨日よりも安くて主婦には助かります。 味も美味しいです。 -------------------------------------------- ・ ・ ・ このような感じでセルの中に色々と文章が入っています。 これをマクロ(VBA)を使いB列には以下のようにしたいです。 -------------------------------------------- B1 今日は、天気です。<br /> <br /> 明日も良い天気になるといいですね。 -------------------------------------------- B2 今日は野菜が安いです。<br /> <br /> 昨日よりも安くて主婦には助かります。<br /> <br /> 味も美味しいです。 -------------------------------------------- ・ ・ ・ 要するに、改行のところに<br />タグを入れたいのです。 今までは、テキストエディタにコピペして、置換していたのですが、 マクロ(VBA)では、どのようにすればいいのでしょうか? 教えて頂けないでしょうか? よろしくお願いします。

  • エクセルVBAで置換したい!

    エクセルVBAで置換したいです。 仮にエクセルSheet1に以下のようなデータがあるとします。 (セルのデータには改行が含まれる物もあります) --------------------------- A1:こんにちは! --------------------------- A2:今日はいい天気です。   明日も晴れるといいですね! --------------------------- A3:そろそろ私は帰ります。   では、また! --------------------------- A4:さようなら! --------------------------- また、エクセルSheet2~10には以下のような文章があります。 --------------------------- A1:文章文章。[A1] --------------------------- A2:文章文章文章文章文章文章 --------------------------- A3:文章文章。[A2]文章文章文章 --------------------------- A4:文章[A3]文章文章文章文章 --------------------------- A:5 [A4] --------------------------- このようになっていて各シートごと文章は違います。 Sheet1[A1]~[A4]のデータをSheet2~10に置換したいのですが、 VBAではどのように書いたらいいのでしょうか?

  • エクセルVBAでセル選択

    エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!

  • エクセル VBA

    エクセルVBAで以下のようなデータがあります。 D列の文字列と右隣のE列の文字列の2つが入っているものをA列から探し、見つかったセルの上にセルを追加し、E列の右隣のF列に入っている文字列を代入したいです。 どのようなプログラムになりますか?

  • エクセルの置換のことで・・・

    エクセルの置換機能で質問です。 仮にSheet1のA1のセルに --------------------------------------------------- 今日は良い天気です。 あすはどうでしょうか? --------------------------------------------------- そして、Sheet2のA1に --------------------------------------------------- 昨日は雨でした。 [★★★] たぶん良い天気になるでしょう。 --------------------------------------------------- このようなデータがあるとします。 VBAを使って置換してSheet2のA1を以下のようにしたいです。 --------------------------------------------------- 昨日は雨でした。 今日は良い天気です。 あすはどうでしょうか? たぶん良い天気になるでしょう。 --------------------------------------------------- マクロの記録で試してみたのですが、セル内に改行がはいっていると --------------------------------------------------- 昨日は雨でした。 今日は良い天気です。 たぶん良い天気になるでしょう。 --------------------------------------------------- このように上手くいきません。 VBAを使って上手くできないでしょうか?

  • エクセルVBAについて

    エクセルVBAについて 選択したセルの、列の背景の塗りつぶしの色を変化させたいと思っています。 また、他の列のセルを選択すると、今まで選択していたセルの列は、塗りつぶしなしの状態に戻ってほしいのですが(塗りつぶしの列が切り替わる)このようなことは可能でしょうか? どうぞ、よろしくお願いいたします。

  • Excel VBAでセルの整列

    Excel VBAでセルの整列 現在、VBAを勉強中の者です。 最近、勉強を始めたばかりですが、この前何とかVBAを用いてセルの塗り潰しが出来る様になりました。 そこで、今度は色が塗り潰されたセルを添付した画像のように整列したいと考えていますが、どんな風にすれば良いのか見当がつきません。 誰か、教えてください。 やりたい事は、A列に結合されているセルがいくつか存在していて、B列を挟んでC列にA列に関連する文字が入力されています。 そして、C列には予めセルが塗り潰されている箇所がありますが、今回、C列において塗り潰されているセルのみを、結合されているセルの最終行に移動させたいのです。

  • エクセルVBA

    お世話になります エクセルのフィルターをかけて列セルの同じ項目を取り出せますが  列セル  フィルターをかけたら 例)1     1    1     2    2    2    2  とか列セルの同じ数字をフィルターを使わずにVBAを使いとりだし、かつ同じ入力した全ての数字の1つだけ取り出し別のセルに貼り付けたいと思っています  例)1が2つ 2が3つあっても1、2を頭の1つだけとりだしたい   取り出すのを1列のみです よい方法があれば教えて下さい

  • Excel VBAでの値の比較

    お世話になります。 Excel VBAでの値の比較方法についてご教授頂きたく存じます。 下記のような値がセルに入っていると仮定しまして、 セルA1とセルG1を比較する セルA2とセルG2を比較する セルB1とセルH1を比較する セルB2とセルH2を比較する 値が違う場合のみ、A列、又は、B列のセルの色を変更したいのですが・・・。 下記例の場合であれば、B1とA2がセルの色が変われば良いです。    A列 B列    G列 H列 1行  1  1     1   2 2行  2  2     3   2 VBAで実現したいと思います。 何卒、宜しくお願い申し上げます。

  • エクセルVBAでテキストを出力したい

    エクセルVBAでテキストを出力したいのですが、 やり方がわからないので教えてください。 仮にSheet2のA列に文章があるとして、 シート全体を1つのテキストファイルとして出力し、 ファイル名をSheet1のA1セルにしたいです。 同じような質問もあるのですが、ファイル名に関しては、 ちょっと見当たらなかったので質問しています。

このQ&Aのポイント
  • 彼氏や旦那さんの魅力や惹かれた点についてお聞きしました。
  • 一緒にいると幸せな瞬間や彼女のかわいらしい姿についても質問しました。
  • また、彼女を大切にすることで彼女も幸せになり、お互いに成長していくことが大切だと実感しています。
回答を見る

専門家に質問してみよう