プロが教えるわが家の防犯対策術!

エクセル(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 />

A 回答 (8件)

#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 />","株式会社","(株)"),"社団法人","(社)")

を使ってください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/27 22:33

こんにちは。

KenKen_SP です。

恐らくセル内の途中でフォント色が変化した場合にも対応したい...といった
要望が後から後から必ず出てくるでしょう。

ワークシートの HTML 自力書き出しは、HTML の知識(タグやカラーコード等)
に加え、セル解析やテキストの書式解析など比較的高度な VBA の知識と経験
が必要で、結構難しい分野です。

頑張って自力開発と言うのも良いですが、VECTOR 等でフリーのアドインが
公開されてますので、これを利用するということも検討してみて下さい。

オススメは....

[ Excel 指定 Range の html 化 - Elie_ExcelRangeToHtml Ver 2.0.0]
http://www.geocities.jp/elie_world/available_sof …

です。

参考URL:http://www.geocities.jp/elie_world/available_sof …
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/27 22:42

#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に変換後のテキストが出ます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/27 22:35

#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列に入力された文字列から、
半角スペースを削除する処理が
組み込まれています。
    • good
    • 0

#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文字?)を使わなくて、変換できると思います。

あとは、株式会社・社団法人の変換ですが、有限会社は、ないのかしらん?
    • good
    • 0

似た質問が出ていて、締め切られました。


そのときの私の回答は
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関数の利用の勉強
でできると思います。
エクセルシートのデータ具体例がない(多分色々動くので説明しずらいのでしょう)ので答えられないし、回答者が答えるとすると
コード行数が大変多くなって答えてくれる人がないでしょう。
こういうのは、自作するのは、質問振りからすると、今は荷が重いのではないですか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/27 22:21

1 項目は行頭から:(全角)までと見なして良いですか?


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

この回答への補足

ご指摘ありがとうございます。
補足させていただきます。

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

申し訳ございませんがよろしくお願いいたします。
今から夜まで戻れませんので新たな補足は夜にさせていただきます。
どうぞよろしくお願いいたします。

補足日時:2006/11/26 12:50
    • good
    • 0

変換前テキストは、どのセルに書かれているのですか?


外部txtファイルですか?

この回答への補足

テキストはホームページからのコピペです。
(著作権等の問題は大丈夫です)

セルにはりつけるか、テキストボックスに貼り付けて「変換」ボタンを
押すと変換後のhtmlが表示されるような感じにしたいと考えています。
セルに貼り付けた場合A1からA4までになります。
よろしくお願いします。

補足日時:2006/11/26 11:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています