エクセル表をHTML化

このQ&Aのポイント
  • エクセル表をHTMLに変換する方法を教えてください。
  • セルの値を入れ替えてエクセル表をHTML化したいです。
  • マクロを使ってエクセル表をHTMLに変換する方法を教えてください。
回答を見る
  • ベストアンサー

エクセル表をHTML化

高橋太郎 赤 佐藤太郎 白 鈴木太郎 黄 山田太郎 青 Sub convertHTML() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets(1) Dim htmlFile As String htmlFile = ActiveWorkbook.Path & "\ファイル名.html" Open htmlFile For Output As #1 Dim i, j As Long i = 1 Print #1, "<table>" Do While ws.Cells(i, 1).Value <> "" Print #1, vbTab & "<tr>"; j = 1 Do While ws.Cells(i, j).Value <> "" Print #1, "<td>" & ws.Cells(i, j).Value & "</td>"; j = j + 1 Loop Print #1, "</tr>" & vbCr; i = i + 1 Loop Print #1, "</table>" Close #1 MsgBox htmlFile & "に書き出しました" End Sub 以下が結果です。 <table> <tr><td>高橋太郎</td><td>赤</td></tr> <tr><td>佐藤太郎</td><td>白</td></tr> <tr><td>鈴木太郎</td><td>黄</td></tr> <tr><td>山田太郎</td><td>青</td></tr> </table> 下記のようにするにはどうすればよいでしょうか? <table> <tr><td>赤</td><td>高橋太郎</td></tr> <tr><td>白</td><td>佐藤太郎</td></tr> <tr><td>黄</td><td>鈴木太郎</td></tr> <tr><td>青</td><td>山田太郎</td></tr> </table> セルを書き換えた方が早いですが、名前がバラバラですし、何千行もあり、作業が大変なので、マクロを書き換えた方が早いかと思いましたので。 宜しくお願いします。

  • nkmyr
  • お礼率67% (403/600)

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

参考に Sub convertHTML2()   Dim ws As Worksheet   Dim htmlFile As String   Dim i As Long, j As Long   Set ws = ThisWorkbook.Worksheets(1)     htmlFile = ActiveWorkbook.Path & "\ファイル名.html"   Open htmlFile For Output As #1   i = 1   Print #1, "<table>"   Do While ws.Cells(i, 1).Value <> ""     Print #1, vbTab & "<tr>";     j = 2     Do While ws.Cells(i, j).Value <> ""       Print #1, "<td>" & ws.Cells(i, j).Value & "</td>";       j = j + 1     Loop     Print #1, "<td>" & ws.Cells(i, 1).Value & "</tr>" & vbCr;     i = i + 1   Loop   Print #1, "</table>"   Close #1   MsgBox htmlFile & "に書き出しました" End Sub

nkmyr
質問者

お礼

おかげさまでうまくできました。 ありがとうございました。

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.4

横に何列も氏名と色2組で並んでいるのでしたら。 Sub Example() Dim ws As Worksheet Dim htmlFile As String Dim i, j As Long Set ws = ThisWorkbook.Worksheets(1) htmlFile = ActiveWorkbook.Path & "\ファイル名.html" Open htmlFile For Output As #1 Print #1, "<table>" For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row Print #1, vbTab & "<tr>"; For j = 1 To Cells(i, Columns.Count).End(xlToLeft).Column Step 2 Print #1, "<td>" & ws.Cells(i, j + 1).Value & "</td>" & "<td>" & ws.Cells(i, j).Value & "</td>"; Next j Print #1, "</tr>" & vbCr; Next i Print #1, "</table>" Close #1 MsgBox htmlFile & "に書き出しました" End Sub

  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.3

> セルの位置もバラバラなので バラバラですか?2列しかデータ記載してませんよね。 たかだか2列の列の切り取り挿入なんて手間は大したことがないと思いますが。 2列じゃないのでしたら、本来のデータを示さないと書き替えたマクロは正しく機能しませんよ。

  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.1

色の列を切り取り 名前の列を選択して「切り取ったセルの挿入」をすれば列が入れかわります。

nkmyr
質問者

お礼

セルの位置もバラバラなので切り取ったセルの挿入はものすごく手間がかかりますので…

関連するQ&A

  • マクロ テーブルタグをリストタグに書き直したい

    下記のVBAコードは表を囲むように選択し、マクロを実行することでテーブルタグのHTML化ができるものです。 表 1 佐藤 東京 2 山田 神奈川 マクロ実行結果 <table>  <tr><td>1</td><td>佐藤</td><td>東京</td></tr>  <tr><td>2</td><td>山田</td><td>神奈川</td></tr> </table> これをリストに書き換えたいです。 <ul> <li>1</li><li>佐藤</li><li>東京</li> </ul> <ul> <li>2</li><li>山田</li><li>神奈川</li> </ul> どうしたら良いでしょうか? 宜しくお願いします。 Sub convertHTML() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets(1) Dim htmlFile As String htmlFile = ActiveWorkbook.Path & "\table.html" Open htmlFile For Output As #1 Dim i, j As Long i = 1 Print #1, "<table>" Do While ws.Cells(i, 1).Value <> "" Print #1, vbTab & "<tr>"; j = 1 Do While ws.Cells(i, j).Value <> "" Print #1, "<td>" & ws.Cells(i, j).Value & "</td>"; j = j + 1 Loop Print #1, "</tr>" & vbCr; i = i + 1 Loop Print #1, "</table>" Close #1 MsgBox htmlFile & "に書き出しました" End Sub

  • アルゴリズムがわからない

    データベースから値を取得するコードを作っているのですがアルゴリズムがよくわからなくて困っています。 class name _____ A   山田 A   鈴木 A   高橋 B   佐藤  C   山本 C   田中 _____ というデータからブラウザへ <table><tr> <th>A</th><td>山田</td><td>鈴木</td><td>高橋</td> </tr></table> <table><tr> <th>B</th><td>佐藤</td> </tr></table> <table><tr> <th>C</th><td>山本</td><td>田中</td> </tr></table> というふうに出力したいんですがよい方法を教えてください。

  • マクロ ランキングの表を作成し、HTML出力 

    A1、B1、C1…にテキストを入れます。 A1 スペシャル B1 (空白) C1 (空白) A2 スズキ B2 2000 C2 1000 A3 タナカ B3 1000 C3 800  ・  ・ 下記のプログラムはセルに空白があるとそこでループが止まってしまいます。 セルの空白で止まるのではなく、最終尾の行に全て空白があると判断した時点でループをストップしたいのです。 上記ではB1とC1に空白があり、B1で止まってしまいます。 アドバイスをお願いします。 Sub convertHTML()  Dim ws As Worksheet  Dim htmlFile As String  Dim i As Long  Dim LineData As String    Set ws = ThisWorkbook.Worksheets(1)  htmlFile = ActiveWorkbook.Path & "\Sample.html"  Open htmlFile For Output As #1    i = 1  Do While ws.Cells(i, 1).Value <> ""   LineData = "<div>" & ws.Cells(i, 1).Value & "</div>" & vbCrLf   LineData = LineData & "<p>" & ws.Cells(i, 2).Value & "</p>" & vbCrLf   LineData = LineData & "<span>" & ws.Cells(i, 3).Value & "</span>" & vbCrLf   Print #1, LineData   i = i + 1  Loop  Close #1  MsgBox htmlFile & "に書き出しました" End Sub

  • マクロ HTMLタグのクラス名を入れたらエラー

    下記のプログラムはセルに文字を入れてHTML化するものです。 HTMLタグにクラス名を入れると「中断モードでコードを実行することはできません」とエラーメッセージが出ます。 LineData = "<div class=“sample”>” & ws.Cells(i, 1).Value & "</div>" & vbCrLf クラス名の「” ”」が問題だと思いますが、どうしたら良いでしょうか? 宜しくお願いします。 Sub convertHTML()  Dim ws As Worksheet  Dim htmlFile As String  Dim i As Long  Dim LineData As String    Set ws = ThisWorkbook.Worksheets(1)  htmlFile = ActiveWorkbook.Path & "\Sample.html"  Open htmlFile For Output As #1    i = 1  Do While ws.Cells(i, 1).Value <> ""   LineData = "<div id=“sample”>” & ws.Cells(i, 1).Value & "</div>" & vbCrLf   LineData = LineData & "<p>" & ws.Cells(i, 2).Value & "</p>" & vbCrLf   LineData = LineData & "<span>" & ws.Cells(i, 3).Value & "</span>" & vbCrLf   Print #1, LineData   i = i + 1  Loop  Close #1  MsgBox htmlFile & "に書き出しました" End Sub

  • HTMLからURL部分を取り出したい。

    HTMLからTABLE情報をもとにURLを取り出したいのですが。 <TABLE> <TR> <TD><SMALL><B><A href="http://23336.html">11111</A></B></SMALL></TD></TR> <TR> <TD><SMALL><B><A href="http://23632.html">22222</A></B></SMALL></TD></TR> <TR> <TD><SMALL><B><A href="http://22152.html">33333<A></B></SMALL></TD></TR> </TABLE> のような書式から URL 部分を取り出したいのですが、うまくいきません。 Table = IE.document.all.tags("TABLE") for i = 0 to table.rows.length - 1  for j = 0 to table.rows.item(i).cells.length - 1    url = table.rows.item(i).cells.item(j).childNodes.item(0).href  next j next i .href ---> .innertext にすれば文字情報は取り出せます。 <SMALL> や <B> が入っていなければurlが正常に取り出せます。 よろしくお願い致します。

    • ベストアンサー
    • HTML
  • HTMLのテーブルにデータを流し込む際のレイアウト

    度々、失礼させていただきます。なにぶん見よう見まねです。 「abc.csv」より条件(1)で抽出した後HTMLのテーブルに並べます。 但しこのままですとHTML上、右に伸びていってしまうので4つぐらいで 新しいテーブルに改行したいのですが、お力お貸しください。 <table> <tr> <td> <?php $Data=file("abc.csv"); for($i=0;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); if($line[0]=="0" && $line[1]=="1"){ //条件(1) print "<td><table><tr>\n" ; print "<td>{$line[2]}</td></tr>" ; print "<tr>" ; print "<td>{$line[4]}</td></tr>" ; print "</table></td>\n" ; } } ?> </td> </tr> </table>

    • ベストアンサー
    • PHP
  • PHP 九九表

    PHPで九九の表を作っているのですが、 どうしてもここまでしか出来ませんでした。 <tr>,<td>を消してみると 数字が横に一列に表示されており、かけ算にはなっているのですが、 表にはどうしてもなりません。 なにかが違うのは分かっているのですが、ないが違うのか分かりません。 誰かお分かりになるかたがいましたらお伺いできませんでしょうか。 <?php echo '<table>'; echo '<tr>'; for ($i = 1; $i <= 9; $i++ ) { for ($j = 1; $j <= 9; $j++ ) echo '<td>' $i * $j'</td>'; echo '</tr>'; } echo '</table>'; ?>

    • ベストアンサー
    • PHP
  • おしえてください

    下記ソースを書きました。 AAAのところtextboxにして 値をほかのフォームに飛ばしたいのですが どのように書きなおせばできますか? <?php print "<table border=1>"; for ($i = 1;$i <= 9; $i++) { print "<tr><td>".$i."</td>"; for ($j = 1; $j <= 10; $j++) { if ($j == 10){ continue 2; } print "<td>".AAAA."</td>"; } print "</tr>" ; } print "</table>"; ?>

    • 締切済み
    • PHP
  • GROUP_CONCATで条件指定

    | ID | name | weight | height | | 1 | 佐藤 | 80 | 160 | | 2 | 太郎 | 90 | 160 | というテーブルから 佐藤と太郎の身長と体重 体重 佐藤:80Kg / 太郎:90Kg 身長 160cm というようにブラウザで表示したいのですが、 どのようにすればよいかわかりません。 現在はphpで $sql .= " SELECT "; $sql .= " GROUP_CONCAT(CONCAT(name, ':', weight, 'kg') SEPARATOR '/') AS weight "; $sql .= " GROUP_CONCAT(CONCAT(name, ':', height, 'cm') SEPARATOR '/') AS height "; $sql .= " FROM "; $sql .= " ex_table "; $rs = mysql_query($sql, $conn); $box =<<<EOM <table> <tr> <td cowspan="2"> 佐藤と太郎の身長と体重 </td> </tr> EOM; while($rec = mysql_fetch_array($rs)){ $box .= "<tr> "; $box .= "<td>体重</td>"; $box .= "<td>{$rec['weight']}</td>"; $box .= "</tr>"; $box .= "<tr> "; $box .= "<td>身長</td>"; $box .= "<td>{$rec['height']}</td>"; $box .= "<tr>"; } $box .= "</table>"; としていますが、これだと 佐藤と太郎の身長と体重 体重 佐藤:80Kg / 太郎:90Kg 身長 佐藤:160cm / 太郎:160cm となります。 同じ値のものは、そのまま数値だけを表示したいのですが、 SQL文で何かうまくする方法はないでしょうか。

    • ベストアンサー
    • MySQL
  • VBA エクセルの表をHTML形式のテーブルに変換

    https://tonari-it.com/vba-html-table/ 上記のマクロではCSSが使えない簡単なテーブルタグです。 <table> <tr> <td class=“CSS1”>1</td> <td> <div class=“CSS2”> <div class=“CSS3”> <img> <span class=“CSS4” style="background-image: url(images/abc.png);"></span> </div> <div class=“CSS5”> <div class=“CSS6”>山田 太郎</div> <div class="CSS7”><span>東京</span></div> </div> </div> </td> <td class="CSS8>2000</td> <td class="CSS9”>2000</td> <td class="CSS9”>2000</td> <td class="CSS9”>6000</td> </tr> </table> というふうにやりたいのですが、どうしたら良いでしょうか?

専門家に質問してみよう