• ベストアンサー

テキストをhtml変換するには

エクセル(VBA)で下記のテキストをhtmlに変換するようなシステムを作るにはどうすれば良いのでしょうか。 よろしくお願いいたします。 変換条件 ・項目部分は色を変えます ・カタカナ、英数字はすべて半角に変換します ・株式会社、社団法人は(株)、(社)に変換します ・必要のない項目は削除します 【変換前テキスト】 ●項目1 : サンプル1です ●項目2 : テスト株式会社 ●項目3 : 必要のない内容 ●項目4 : 文章があります 【変換後のhtml】 <font color="#008080">●項目1:</font>サンプル1です<br /><br /> <font color="#008080">●項目2:</font>テスト(株)<br /><br /> <font color="#008080">●項目4:</font>文章があります<br /><br />

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

  • ベストアンサー
  • dkljdkfsj
  • ベストアンサー率23% (13/56)
回答No.6

#5修正です (#5だと、タグ内の半角空白も削除されてしまいました) =SUBSTITUTE(SUBSTITUTE("<font color=""#008080"">" & SUBSTITUTE(ASC(LEFT(A1,FIND(":",A1,1))) & "</font>" & ASC(RIGHT(A1,LEN(A1)-FIND(":",A1,1)))," ","") & "<br /><br />","株式会社","(株)"),"社団法人","(社)") を使ってください。

reona01
質問者

お礼

ありがとうございました。 セルにコピーするだけでできました。 本当に助かりました。

その他の回答 (7)

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

こんにちは。KenKen_SP です。 恐らくセル内の途中でフォント色が変化した場合にも対応したい...といった 要望が後から後から必ず出てくるでしょう。 ワークシートの HTML 自力書き出しは、HTML の知識(タグやカラーコード等) に加え、セル解析やテキストの書式解析など比較的高度な VBA の知識と経験 が必要で、結構難しい分野です。 頑張って自力開発と言うのも良いですが、VECTOR 等でフリーのアドインが 公開されてますので、これを利用するということも検討してみて下さい。 オススメは.... [ Excel 指定 Range の html 化 - Elie_ExcelRangeToHtml Ver 2.0.0] http://www.geocities.jp/elie_world/available_software/index.html です。

参考URL:
http://www.geocities.jp/elie_world/available_software/elie_excelrangetohtml_ver1_0_0/index.html
reona01
質問者

お礼

アドバイスをいただきありがとうございます。 おっしゃる通りだと思います。 私もはじめはVECTORで様々なソフトをダウンロードしてたんですが なかなか思うようにいかず今回こちらで質問させていただきました。

noname#22650
noname#22650
回答No.7

#2です。すでに色々回答出てますが、別のやり方で。 ユーザ定義関数を使う方法 [Alt]+[F11]でVisual Basicの画面を開く [挿入]→[標準モジュール]で標準モジュールを追加し、下記をコピペ Function MyConv(str As String) As String Dim s1 As String, s2 As String str = StrConv(str, vbNarrow) '半角へ変換 If InStr(1, str, ":") > 0 Then s1 = Left(str, InStr(1, str, ":") - 1) ' 項目名 s2 = Mid(str, InStr(1, str, ":") + 1) '文章 s1 = Trim(s1) '前後のスペースを削除 s2 = Trim(s2) '前後のスペースを削除 s2 = Replace(s2, "株式会社", "(株)") '文字列置換 s2 = Replace(s2, "社団法人", "(社)") '文字列置換 MyConv = "<font color=""#008080"">" & s1 & ":</font>" & s2 & "<br /><br />" Else MyConv = "" End If End Function Visual Basicの画面は閉じて、Excelへ戻り、B列へ数式を入れる B1 =MyConv(A1) B2 =MyConv(A2) B3 =MyConv(A4) A1~A4へデータを貼り付けるとB1~B3に変換後のテキストが出ます。

reona01
質問者

お礼

ありがとうございました。 こちらの方法でもしっかりと変換できました。 今後はしっかりとVBの勉強をしていきたいと思います。

  • dkljdkfsj
  • ベストアンサー率23% (13/56)
回答No.5

#1、#4です。 ※A1からA4までデータが入っているとする B1に =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE("<font color=""#008080"">" & ASC(LEFT(A1,FIND(":",A1,1))) & "</font>" & ASC(RIGHT(A1,LEN(A1)-FIND(":",A1,1))) & "<br /><br />"," ",""),"株式会社","(株)"),"社団法人","(社)") と入力し、B4までコピー。 B3をクリア B4に入っている関数をそのままB3へ貼り付け (数式ボックスまたは、F2で編集状態にしコピペ) これで、 A1の内容を変換しB1へ A2の内容を変換しB2へ A4の内容を変換しB3へ 表示されますので、B列の内容を貼り付けてください。 A列に入力された文字列から、 半角スペースを削除する処理が 組み込まれています。

  • dkljdkfsj
  • ベストアンサー率23% (13/56)
回答No.4

#1です A1からA4にデータを貼り付けたとして B1に ="<font color=""#008080"">" & ASC(LEFT(A1,FIND(":",A1,1))) & "</font>" & ASC(RIGHT(A1,LEN(A1)-FIND(":",A1,1))) & "<br /><br />" と入力し、B4まで複写。 それらしい感じになりますかね。 変換前テキストの ●項目1 : サンプル1です ですが、 「:」の前後に全角スペースが入っていますが、これを削除するのですか? また、変換後テキストの先頭5文字が ●項目1: ●項目2: ●項目4: の固定であるなら、変換前テキストの6文字(5文字?)を使わなくて、変換できると思います。 あとは、株式会社・社団法人の変換ですが、有限会社は、ないのかしらん?

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

似た質問が出ていて、締め切られました。 そのときの私の回答は HTML文は、テキストファイルであることをお忘れなく。 後はタグの知識 VBのPrint #文 IEのVBAからの開き方 の知識が要ります。 ーーーー エクセルのSheet1にコマンドボタンを1つ貼り付けます。 ダブルクリックすると Private Sub CommandButton1_Click() End Subが現れますから 下記のコードを作ります(コピー)。 OpenのXXXのところを自分の場合に合わせて変えること。 Private Sub CommandButton1_Click() Open "C:\Documents and Settings\XXX\My Documents\h001.html" For Output As #1 Print #1, "<HTML>" Print #1, "<BODY>" Print #1, "<FONT COLOR=" & "#cc0000>" Print #1, Cells(1, "A") Print #1, "<FONT>" Print #1, "</BODY>" Print #1, "</HTML>" Close #1 '----- Set objExplorer = CreateObject("InternetExplorer.Application") objExplorer.Navigate "C:\Documents and Settings\OTO\My Documents\h001.html" objExplorer.Visible = True Set objExplorer = Nothing End Sub Sheet1のA1に文章を入力します。 コマンドボタンをクリックすると インターネットエクスプローラーが開き、セルA1の文章が出ます。 (テスト済み) この後はホームページの作り方のHTML文の解説を探して、文字列の 1 部を色付けするタグの書き方など調べてください。 A1: A5まで文章を分けて入れる場合は、ForNextなどで For i = 1 To 5 Print #1, Cells(i, "A") Next i とすればよいと思います。 ーーー さて本質門ですが (1)項目部分の色を変えるのは、項目部分は自分でVBA内で判断し、HTMLのタグの勉強すること (2)法人組織名は株式会社などの文字列を探し(株)に置き換えるか Replace 関数の勉強 (3)必要の内項目を省く、は必要の内項目をVBAで判断し、HTML文に 書き出さない、だけのこと (4)半角変換はStrConv関数の利用の勉強 でできると思います。 エクセルシートのデータ具体例がない(多分色々動くので説明しずらいのでしょう)ので答えられないし、回答者が答えるとすると コード行数が大変多くなって答えてくれる人がないでしょう。 こういうのは、自作するのは、質問振りからすると、今は荷が重いのではないですか?

reona01
質問者

お礼

ありがとうございました。 今の私は勉強不足でよくわかっていない部分が多いです。 ただ急遽、なんとかしなければならなかったためこのような質問となりました。 ご回答ありがとうございました。

noname#22650
noname#22650
回答No.2

1 項目は行頭から:(全角)までと見なして良いですか? 2 カタカナの扱いですが、「半角に変換します」と書いてますが、サンプルは全角です。半角ですよね?   (フォーム送信時に勝手に変換されたのかな?) 3 「必要のない項目」の判断基準は? 4 結果の出力ですが、セルに出力でいいですか?それともファイルに出力ですか?

reona01
質問者

補足

ご指摘ありがとうございます。 補足させていただきます。 1項目は行頭から:(全角)までと見なします 2変換後のhtmlサンプルでは半角にしたのですがどうやらここでは半角表示はできないみたいです。  html変換後は半角になります。 3必用のない項目は確定しておりますので「項目3:」が必要なしと判断していただければいいです。 4結果はファイルではなくセル、もしくはリストボックスに表示(!?)できればいいです。  最終的には結果をコピペして本来のHP本体の一部に埋め込みます。  なのでファイルとして残す必要もありません。  エクセルを選んだ理由は誰もがこのシステムを使えるようにとのことでしたので… 申し訳ございませんがよろしくお願いいたします。 今から夜まで戻れませんので新たな補足は夜にさせていただきます。 どうぞよろしくお願いいたします。

  • dkljdkfsj
  • ベストアンサー率23% (13/56)
回答No.1

変換前テキストは、どのセルに書かれているのですか? 外部txtファイルですか?

reona01
質問者

補足

テキストはホームページからのコピペです。 (著作権等の問題は大丈夫です) セルにはりつけるか、テキストボックスに貼り付けて「変換」ボタンを 押すと変換後のhtmlが表示されるような感じにしたいと考えています。 セルに貼り付けた場合A1からA4までになります。 よろしくお願いします。

関連するQ&A