• ベストアンサー

マクロを使ってこんな事って出来ますか?

エクセルでこんな事できるでしょうか? Aのセルにカテゴリ名 Bのセルにタイトル CのセルにURL を入力しておき マクロを使って <b>カテゴリ1</b> <ol> <li><a href="http://123.com/>テスト1</a> <li><a href="http://aaa.com/">テスト2</a> </ol> <b>カテゴリ2</b> <ol> <li><a href="http://456.com/">テスト3</a> <li><a href="http://bbb.com/>テスト4</a> </ol> このようにしたいですが出来るでしょうか? 自分なりにエクセルのセルにタグを入力してマクロの記録を使ってやってみたのですが、どうしても思うようにいきません。 マクロに詳しい方、どうか教えてください。 よろしくお願いします。

  • siraku
  • お礼率54% (276/508)

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

こんにちは。 既ご回答と同じ内容なのですが、カテゴリ分けの処理をしています。  1. マクロを実行する前に、カテゴリでデータを並べ替えておく  2. マクロを実行すると、2行目から100行目のデータをメモ帳に    Html 出力します。 なるべく分かり易いようにシンプルに書きましたので、適当に修正 してみて下さい。  # 以前類似の質問を見かけた気がしますが、探せませんでした... Sub CreateHtml()      If Not TypeOf Selection Is Range Then Exit Sub      Dim i   As Long   Dim sPrev As String     Open "C:\test.tmp" For Output As #1      ' // Output html   sPrev = ""   For i = 2 To 100     If Not IsEmpty(Cells(i, "A")) Then       ' //       If sPrev <> Cells(i, "A").Value Then         Print #1, "<!-- Category -->"         Print #1, "<strong>" & Cells(i, "A").Value & "</strong>"         Print #1, "<ol>"         sPrev = Cells(i, "A").Value       End If       ' //       Print #1, " <li>";       Print #1, "<a href='" & Cells(i, "C").Value & "'>";       Print #1, Cells(i, "B").Value;       Print #1, "</a>"       ' //       If sPrev <> Cells(i + 1, "A").Value Then         Print #1, "</ol>"       End If     End If   Next   Close #1   Shell "notepad.exe C:\test.tmp", vbNormalFocus      End Sub

siraku
質問者

お礼

ご回答ありがとうございました。 大体解決できましたが、あと1つだけ教えてください。 上記で行った場合のURLですが  <li><a href='http://2.html'>キャベツ</a> こんな感じになります。 それを  <li><a href="http://2.html">キャベツ</a> このようにしたいです。 つまり 'を"にかえたいです。 簡単に出来るかと思ったのですが、思わぬことろでつまずきました。

その他の回答 (4)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.5

No1です。変換した結果をセルに入力したいという理由が不明ですが・・・ No1の補足の例がシートの1行目から入っていて、A列、B列、C列がそれぞれカテゴリ、タイトル、URLとした場合の例を作りました。 (ロジックはNo4さんのをそのままお借りしています。)とりあえずD11のセルに結果が入りますが Sub CreateList()   Dim i As Long   Dim sPrev, sMes, cr As String   cr = Chr(10)   sMes = ""   sPrev = ""   For i = 1 To 100     If Not IsEmpty(Cells(i, 1)) Then       If sPrev <> Cells(i, 1).Value Then         sMes = sMes & "<b>" & Cells(i, "A").Value & "</b>" & cr & " <ol>" & cr         sPrev = Cells(i, 1)       End If       sMes = sMes & "  <li><a href=""" & Cells(i, 3).Value & """>"       sMes = sMes & Cells(i, 2) & "</a></li>" & cr       If sPrev <> Cells(i + 1, 1).Value Then         sMes = sMes & " </ol>" & cr       End If     End If   Next i   Cells(11, 4).Value = sMes End Sub ただし、セル入力には文字数の制限があったはずですので、データが多いと入りきらなくなります。 結局はNo4の方法でファイルに直接書き出すのが良いと思われます。 「’」はそのままでhtml上は問題はないはずですが、どうしても直したければ上の例のようにすれば直ります。

siraku
質問者

お礼

ご回答ありがとうございます。 大変参考になりました。

  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.3

No.2です。 記述ミスがありましたので補足です。 下から4行目、行末にダブルクォーテーションが抜けてました。 最下行に Print #1, "</ol>" を追加してください。

  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.2

こんなサンプルで如何でしょうか   Range("A2").Select   Cat = Selection.Value   Print #1, "<b>" & Cat & "<b>"   Print #1, "<ol>"   With Selection   Do Until .Value = ""     If Cat <> .Value Then       Print #1, "</ol>"       Print #1, "<b>" & .Value & "</b>"       Print #1, "<ol>"       Cat = .Value     End If     Print #1, "<li><a href=""" & .Cells(1,3) & """>" & .Cells(1,2) & "</a>     .Cells(1,2).Select   Loop   End With

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

出力先が不明ですが、エクセルにデータがあって。それをhtmlファイルにリスト形式で出力するものと仮定しました。 シートの1~3行にA~Cのデータがあり、1~N列分のデータセットがあるとします。 対象とするデータシートがtempSheetで、出力先をFileと仮定すれば、以下のような感じでしょうか。  For i = 1 To N   Print #File, "<b>"; tempSheet.Cells(1, i).Value; "</b><ol>"  Print #File, "<li><a href='"; tempSheet.Cells(3, i).Value; "'>";  Print #File, tempSheet.Cells(2, i).Value; "</a>"  Print #File, "</ol>"  Next i データがABCの3項目なので、カテゴリA、タイトルB(リンクC)の1項目のリストにしています。 上の例では2項目になっていましたが、データがABCDEとあるということなのかな?

siraku
質問者

補足

ご回答ありがとうございます。 説明不足で申し訳ありませんでした。 例えば Aカテゴリ | Bタイトル| CページのURL ----------------------------------------- 野菜   | 大根   | http://1.html ----------------------------------------- 野菜   | キャベツ | http://2.html ----------------------------------------- 肉    | 牛    | http://3.html ----------------------------------------- 肉    | 鳥    | http://4.html ----------------------------------------- 肉    | 豚    | http://5.html ----------------------------------------- 魚    | マグロ  | http://6.html ----------------------------------------- 魚    | ひらめ  | http://7.html ------ ----------------------------------- 魚    | 鯛    | http://8.html ----------------------------------------- このようなデータがあったとします。 これをどこでもいいのですが1つのセルの中に <b>野菜</b> <ol> <li><a href="http://1.html">大根</a></li> <li><a href="http://2.html">キャベツ</a></li> </ol> <b>肉</b> <ol> <li><a href="http://3.html">牛</a></li> <li><a href="http://4.html">鳥 </a></li> <li><a href="http://5.html">豚</a></li> </ol> <b>魚</b> <ol> <li><a href="http://6.html">マグロ </a></li> <li><a href="http://7.html">ひらめ </a></li> <li><a href="http://8.html">鯛</a></li> </ol> このようにデータを入れたいです。 セルは別にA4でもA5でも構いません。 簡単な物だったら =A1&B1&C1 こんな感じでやっていたのですが、上記のように複雑になると分かりません。 マクロを使って出来るのであれば教えてください。 よろしくお願いします。

関連するQ&A

  • スタイルシートの事で?

    カテゴリが違うかもしれませんがお願いします。 下記のタグを表示させると <ul> <li><a href="http://1.com/" target="_blank">テスト1</a></li> <li><a href="http://12.com/" target="_blank">テスト2</a></li> <li><a href="http://123.com/" target="_blank">テスト3</a></li> <li><a href="http://1234.com/" target="_blank">テスト4</a></li> <li><a href="http://12345.com/" target="_blank">テスト5</a></li> <li><a href="http://123456.com/" target="_blank">テスト6</a></li> </ul>  ・テスト1  ・テスト2  ・テスト3  ・テスト4  ・テスト5  ・テスト6 このように表示されますが、スタイルシートを使って下記のように中央で折り返して表示させるにはどうすればいいでしょうか?  ・テスト1 ・テスト4  ・テスト2 ・テスト5  ・テスト3 ・テスト6 よろしくお願いします。

  • 秀丸エディタでHTMLの部分のURLだけ抜き出したい。

    秀丸エディターでマクロを使って <a href="http://aaa.com/1111"> <a href="http://aaa.com/2222"> <a href="http://bbb.com/1111"> <a href="http://bbb.com/3333"> の部分の http://aaa.com/1111 http://aaa.com/2222 http://bbb.com/1111 http://bbb.com/3333 の部分だけを抜き出したいと思います。 よろしくお願いします。

  • 複数セルを結合して一つのセルにしたい

    エクセル関数の質問です。 A列のセルに、数字が並んでいます。 aaaという部分はカテゴリーを示すものです。 B列のセルに同じカテゴリーの別の数値を連結させ、スペースで区切ってひとつのセルに表記させるにはどうすればいいでしょうか? concatenate関数を組み合わせて式を作ろうとしたのですが、うまく出来ませんでした。 VBAやマクロ、ユーザー定義関数になっても構いません。 ご教授ください。 A       B aaa_0001  aaa_0002 aaa_0003 aaa_0002  aaa_0001 aaa_0003 aaa_0003  aaa_0001 aaa_0002 bbb_0012  bbb_0013 bbb_0013  bbb_0012 ccc_0017

  • olタグ・liタグで一部のリストを横並びにした

    olタグ・liタグで一部のリストを横並びにしたい場合 olタグに display: inline; list-style-type: none; としても意味がないのでしょうか? <style type="text/css"> ol.test1{ display: inline; list-style-type: none; }</style> <ol class="test1"> <li><a href="#">階層1</a></li> <li><a href="#">階層2</a></li> <li><a href="#">階層3</a></li> </ol> としても横にはならずに番号が消えました。 なので li.test2{ display: inline; list-style-type: none; } として <ol> <li class="test2"><a href="#">階層1</a></li> <li class="test2"><a href="#">階層2</a></li> <li class="test2"><a href="#">階層3</a></li> </ol> としたのですが liの数だけスタイルシートを指定しないとダメなのでしょうか? <ol> <li class="test2"><a href="#">階層1</a></li> <li><a href="#">階層2</a></li> <li><a href="#">階層3</a></li> </ol> のように一つだけクラスに入れたら そこだけ番号が消えた上 横並びにはなりませんでした。

    • ベストアンサー
    • CSS
  • エクセルのマクロの事で質問です。

    エクセルのマクロの事で質問します。 エクセルにはセルA~Mまでデータが入っています。(件数的にはかなりの量です) そこでマクロを使ってセルN内に以下のようなHTMLを入れたいです。 <div align="center"><b>【Dのセル】</b></div> <div align="center"><a rel="nofollow" href="【Hのセル】"><img src="【Iのセル】" border="0" alt="【Cのセル】"></a></div> <div align="center"><a rel="nofollow" href="【Hのセル】">【Cのセル】</a></div> 【Eのセル】 【Fのセル】 <!--【Aのセル】【Bのセル】--> 以前いろいろと教えてもらったのですが、まだ自分では解決できそうにありません。 どなたか、ご指導のほどよろしくお願いします。

  • Excel(セルの結合マクロ)

    いつもお世話になっております。 Excelのマクロで、選択範囲の中で、下のセルが空白のものは、上のセルと結合されるマクロを作りたいと考えています。 (例1:A1セルに”TEST”が入力されており、A2,A3セルが空白として、A1:A3を選択し、マクロを実行するとA1からA3がセル結合される  例2:A1に”TEST2”B2に"TEST3"が入力されており、A1:B3を選択すると、A1からA3が結合され、B2とB3も結合される) 説明が下手で申し訳ないのですが、お力を貸していただけませんでしょうか? よろしくお願いいたします。

  • マクロの事で質問です?

    以前、「マクロを使ってこんな事って出来ますか?」を質問した者です。 http://oshiete1.goo.ne.jp/qa4035950.html ANo.4のKenKen_SPさんの回答が参考になりました。 そこで、KenKen_SPさんのソースを参考にして別の事をやってみたのですが、うまくいきません。 やりたい事は エクセルのA列に文章 B列にURLを入力してマクロを使って下記のようにメモ帳に出力したいです。 例 1ここに文章...<a href="http://123.com" target="_blank">続きはこちら</a><br> 2ここに文章...<a href="http://234.com" target="_blank">続きはこちら</a><br> 3ここに文章...<a href="http://345.com" target="_blank">続きはこちら</a><br> 4ここに文章...<a href="http://456.com" target="_blank">続きはこちら</a><br> いつも聞いてばかりですいませんがよろしくお願いします。

  • 秀丸エディタでHTMLの部分のURLだけ抜き出したい。

    秀丸エディターを使って <img src="/image/cam.gif"></td><td align=center nowrap><a href="http://aaa.com/1111"><a href="http://aaa.com/2222"><a href="http://bbb.com/1111"><a href="http://bbb.com/3333">....................... のURL部分の http://aaa.com/1111 http://aaa.com/2222 http://bbb.com/1111 http://bbb.com/3333 の部分だけを抜き出したいと思います。 よろしくお願いします。

  • マクロの並行処理について

    あるサーバーにおいてあるCSVを読みに行く常駐ソフト(AAA.exe)があります。 これとエクセルが連携していて、エクセルのセルに =AAA|a とか =AAA|b とか入力しておくとCSVのaやbの値がセルに入力されます。 この常駐ソフトはリアルタイムに動いて、CSVは1秒ごとに新しいデータに書き換えられるので、エクセルのセルの値も当然1秒ごとに新しい値に変わっていきます。 これを動かしながら、マクロを別でくんで、こちらはタイマーを設定して、10秒ごとにある特定のセルの値を見に行き、そのセルの値がある規定値以上になると、プログラムを走らせるようにしています。 朝の9時前後には規定値をこえるため、マクロのプログラムが動かなければいけないのですが、いつも10時過ぎになってやっと動きます。 また、セルの値もすべてのデータをとりにいかず部分的にしか入力されません。 これは常駐ソフトでエクセルにデータをどんどん入力している上で、さらにマクロを動かしているから、並行処理ができずに動作が不安定になっているのでしょうか? ちなみにマクロのタイマーは DoEvents Sleep (10000) で10秒またせた後に規定値以下ならば再起呼び出しで自分自身を呼び出すようになっています。 分かる方、もしくは予想でもいいので何かヒントとなるものが得られればと思います。 アドバイスよろしくお願いします。

  • EXCELでのデータベースの作成方法について

    AAAというEXCELファイルがあります。 その中にシート「AAA-a」を作成します。 次に「AAA-b」を作成します。というようにどんどん増えていくとします。 次にBBBというEXCELファイルを作成し、その中のA1セルにAAAファイルの「AAA-a」シート名を読み込みそこに「AAA-a」シートまでのハイパーリンクをつけたいです。 A2セルにも「AAA-b」のハイパーリンクというようにどんどん自動で増やしていきたいのですがどうやればいいかわかりません。 多分マクロが一番いいかと思うのですがわかる方がいましたら教えてください。 よろしくお願いします。

専門家に質問してみよう