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

(例は簡略化していますが、)
Excelに、
登録ナンバー・住所の一部・年齢・所属
といったデータが、100人分書かれています。
これを、
予め自分で作っておいたHTMLのテンプレートの中の、指定した部分に、それぞれのデータをさっと埋め込んでくれるソフトはありませんでしょうか?

もう少し詳しく申し上げますと……

テンプレートとなるHTMLの方では、ナンバーや住所の欄は空欄にして作っておきます。
その後、何らかの処理をすれば、その空欄部分に適正な値を入力してくれて、しかも100ファイルコピーしてくれる―100人分のHTMLファイルを100枚作ってくれる、そんなソフトを探しているのです。

以下、素人の考えた仕組みで恐縮ですが、
同報メールソフト(Mail Magic 2.0)の説明を読んでいまして、エクセルなどのデータ(カンマ区切りファイルにしたもの)のそれぞれの要素を「メールの本文の指定した場所に」埋め込むことができる!ということでしたので、
それと全く同じように、「テキストやHTMLの指定した場所に」埋め込んだものを人数分作ってくれる、簡単なソフトがあるのでは!?
と思い、質問させて頂いています。

なお、今回の質問は「ExcelファイルをそのままHTMLにする方法」ではありません。

よろしくお願い致します。

A 回答 (2件)

> 以上のどちらかを希望しています。



「希望しています」の意味がわかりませんが、
VBA がおわかりにならないということでしょうか。

結果としてHTMLファイルが出力されれば
よいのではないのですか。
Excel のデータを処理するのに、
Excel の機能のひとつである VBA で実現可能であるのに、
他のソフトを使うというのでしょうか。

一応、VBAのサンプルあげときます。
基になるHTMLファイル中の<!***>というタグを
Excel のセルの値に変換して出力します。

タグの***の部分は、Excelファイルの1行目のセルの
値です。

    A     B 
1 登録ナンバー  住所
2 12345   東京都
3 67890   北海道

とシートにあった場合、基のHTMLファイル中の
<!登録ナンバー> とある部分を12345に
変換したファイルをc:\に出力します。
VBA を実行するとファイル選択のウィンドウが開くので
基のHTMLファイルを指定してください。

Sub htmlMake()
Dim myFile As String
Dim myAry() As String
Dim myStr As String
Dim i As Integer, j As Integer

myFile = _
Application.GetOpenFilename _
("HTMLファイル (*.htm;*.html) , *.htm;*.html")

ReDim myAry(Range("IV1").End(xlToLeft).Column - 1)
For i = 0 To Range("IV1").End(xlToLeft).Column - 1
myAry(i) = Range("A1").Offset(, i).Value
Next

For i = 2 To Range("A65536").End(xlUp).Row
Open myFile For Input As #1
Open "c:\" & Range("A" & i).Value & ".htm" For Output As #2
Do While Not EOF(1)
Line Input #1, myStr
If InStr(myStr, "<!") > 0 Then
For j = 0 To UBound(myAry)
myStr = _
Replace(myStr, "<!" & myAry(j) & ">", Cells(i, j + 1).Value)
Next
End If
Print #2, myStr
Loop
Close #1
Close #2
Next
MsgBox ("出力終了")
End Sub
    • good
    • 0
この回答へのお礼

うわあっ!出来ました!!(感動)

す、すみません、VBAやったことなかったんですよー。((T_T)馬鹿にしてやって下さい!)VBAなんて、私などには縁のないもの…とか、何となく思いこんでいたんです。いえ、じゃあ今「私もできる!」と思ったかというとそういうわけではなく、暗号を前に呆然となっているのは同じなのですが…(>_<)

とっても具体的に指示して頂きましたので(#1で書きました「逐一指示」にあたることで、もう大感謝です)、どきどきしながらとにかくVBAを立ち上げてみて、頂きました命令文?を、失礼ながらそのままコピペして実行してみたら……。あっさり吐き出してくれました。夢みたいです。
しかも、*.htmの*の部分が登録ナンバーになってくれているとは、全く完璧ですね。Open "c:\" & Range("A" & i).Value & ".htm" For Output As #2 の行が、それなのかなー?と、はじめて外国語を学ぶ人間のような気持ちで眺めています。(^_^;すみません

一応ご確認ですが、これ、行・列の数に制限はないですよね。
一応3*3くらいに増やしてやってみても大丈夫だったので、そうだろうなーとは思いつつ。
問題ない場合はお返事不要です。
数日後にポイント発行後締め切らせて頂きます。

詳細な指示を与えてくださって、本当に嬉しいです。
ありがとうございました!

お礼日時:2003/09/12 21:38

VBA 使えば、比較的容易に


できると思います。

HTML 書き出す処理を、値を換えて
100回ループすればよいのですから。
    • good
    • 0
この回答へのお礼

・ソフトを利用する
・逐一書いてあるページの通りにして自作する
以上のどちらかを希望しています。

お礼日時:2003/09/12 13:48

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

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