[三流君] −−> [VBAで楽しく] −−> [バックナンバー一覧]
−−> No.165 Excel VBA テキストファイルで.htmlの雛型を作成する

Excel VBA テキストファイルで.htmlの雛型を作成する

発行内容

Excel VBA テキストファイルで.htmlの雛型を作成する

どうも、三流プログラマーのKen3です。

今回は、
セルに入力したマスターデータを使用して、
テキストファイル(html)を作成してみます。

なんていってても、普通のファイル作成処理です。

/* * 1.やりたいこと 概要 */

宿・ホテル予約の広告ページを作って儲けようと考えている、 三流プログラマーが東京の田舎に住んでました。 広告、貼っただけじゃ予約取れないからなぁ〜 よし、都道府県別のhtmlを作って、特集ページにするか? 北海道 hokk.html ・ ・ 東京 tokyo.html 神奈川 kanagawa.html ・ ・ 大阪 osaka.html ・ ・ と47都道府県作ってやるか。 雛型は、 <html> <head> <title>北海道 宿・ホテルの予約/検索</title> </head> <body> <h1>北海道 宿・ホテルの予約/検索</h1> 北海道の宿・ホテルの予約や検索サイトをまとめています。<br> クリックして探してみてください<br> あとでバナー広告をここに貼る。<br> </body> </html> 手打ちで、上記ファイルを作成して、xxx.htmlとして、 あとは、 hokkaidou.html...kanagawa.htmlとHTMLを47個ファイルをコピーしてリネーム、 開いて都道府県名を打ち込むのも芸が無いしなぁ。 Excelに地区、県名、ファイル名を貼り付けて、 HTMLの雛型ファイルを作成してみたいと思います。 A列 B列 C列 9行 地域 都道府県 ファイル名 10行 北海道 北海道 hokkaidou.html 11行 東北 青森県 aomori.html ・ ・ ・ ・ ・ ・ 沖縄県 okinawa.html と、データを入力してから、VBAでファイルを作成してみたいと思います。 ↑シート作成イメージ

/* * 2.テキストファイル作りの基本 */

htmlファイルって言っても、普通のテキストファイルなんだよね。 なんて話を、 テキストファイル処理 ファイルへの書き込み http://www.ken3.org/vba/backno/vba027.html でしてました。 新規のテキストファイル作成の基本は、 開けて(Open)、書いて(Print #)、閉めて(Close) です。 あとは、D:\aaa.txtと絶対パス指定 か ThisWorkbook.Path & "\aaa.txt" とファイル名をブックと同じ位置に置いたりするぐらいかなぁ。
Sub test001()

    Dim strFNAME As String 'ファイル名格納用

    'ブックと同じ位置にtest165.htmlを作成する
    strFNAME = ThisWorkbook.Path & "\test165.html" 'ファイル名の作成
    Open strFNAME For Output As #1 'ファイル番号1で新規作成

    'データ書き込み、
    Print #1, "<html>"
    Print #1, Now & "です"
    Print #1, "</html>"
    
    Close #1  '開いたら閉じようね

    '終了メッセージの表示
    MsgBox strFNAME & "を作成しました、確認してね"

End Sub
こんな感じで、htmlファイルを簡単に作ることができます。

/* * 3.ループの作り方いろいろ */

次のポイントは、シートからファイル名を取得して、 そのファイル名でxxxx.htmlとファイルを作成するんだろ。 データ数分ループを作りますか。 47都道府県で、10行目からなので、
Sub test002()
    Dim y As Integer  'ループのカウンター
    For y = 10 To 56
        Debug.Print Cells(y, "B") 'B列をテスト表示
    Next y
End Sub
と、 回す人も居れば、47って数字に意味を持たせるために、
Sub test002()
    Dim y As Integer  'ループのカウンター
    For y = 1 To 47
        Debug.Print Cells(9 + y, "B") 'B列をテスト表示
    Next y
End Sub
と、1から47のループを作る人も居ます。 都道府県はまず可変にならないんだけど、 可変になっても対応するために、
Sub test002()
    Dim y As Integer  'ループのカウンター
    y = 10  '10行目から
    While Cells(y, "B") <> ""  'B列に何か入っている間ループ
        Debug.Print Cells(y, "B") 'B列をテスト表示
        y = y + 1
    Wend
End Sub
と、B列に何か入っている間のループを作る人も居ます。 固定のときはForで可変の時はWhileやDo loopを使う人多いですね。 まぁ、そんな感じで、データ数分のループを作ります。

/* * 4.受け取った都道府県名とファイル名を使用してファイルを作成する */

次は、受け取った都道府県名とファイル名を使用して、 実際にxxx.htmlファイルを作成してみます。 まず、メインのループは、 'メインのループ
Sub test002_main()

    Dim y As Integer  'ループのカウンター
    
    y = 10  '10行目から
    While Cells(y, "B") <> ""  'B列に何か入っている間ループ
        'ファイル作成のサブ関数に都道府県名とファイル名を渡す
        Call test002_CreateHtmlFile(Cells(y, "B"), Cells(y, "C"))
        y = y + 1
    Wend

End Sub
と、B列にデータが在る間、 B列(都道府県名)とC列(ファイル名) を サブ関数に渡します。 サブ関数では、受け取った名称を使用して、雛形ファイルの作成作業を行います。 '都道府県名とファイル名を受け取り、HTMLファイルを作成するサブ関数
Sub test002_CreateHtmlFile(strKEN As String, strHTML As String)
    Dim strFNAME As String 'ファイル名格納用

    'ブックと同じ位置にxxx.htmlを作成する
    strFNAME = ThisWorkbook.Path & "\" & strHTML 'ファイル名の作成
    Open strFNAME For Output As #1 'ファイル番号1で新規作成

    'データ書き込み、都道府県だけ変えて作成する
    Print #1, "<html>"
    Print #1, "<head>"
    Print #1, "<title>" & strKEN & " 宿・ホテルの予約/検索</title>"
    Print #1, "</head>"
    Print #1, "<body>"
    Print #1, "<h1>" & strKEN & " 宿・ホテルの予約/検索</h1>"
    Print #1, strKEN & "の宿・ホテルの予約や検索サイトをまとめています。<br>"
    Print #1, "クリックして探してみてください<br>"
    Print #1, ""
    Print #1, "あとでここにバナー広告をここに貼る。<br>"
    Print #1, ""
    Print #1, "</body>"
    Print #1, "</html>"
    
    Close #1  '開いたら閉じようね

End Sub
うわっ、芸無くPrint #で縦に羅列したの・・・ぷっ。 笑わないでよ。とっかかりなんだからさ・・・

/* * 5.終わりの挨拶 */

今回のサンプル、 http://www.ken3.org/vba/lzh/vba165.lzh に保存しました。 解凍して都道府県.xlsを開いて、 内容を変えたりして、遊んでください。 パラメータでファイル名と内容を渡し、 テキストファイル(HTML)を作成してみました。 でも、なんか、しっくり来ないし、変更が大変だよねこれでは・・・ 次回は、変更しやすい作り方にチャレンジかな。 何か読者の心に残れば、うれしいです。 *私の独り言をうまく消化してくださいね。 いつも狙いが違うだろ?三流プログラマー Ken3でした。


ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

種類別のリンク や 広告など

気になったジャンル↓を選択してください。

人気記事(来場者が多いTOP3):
[VBAでIE,WebBrowserを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[Access から Excel 連携 CreateObject("Excel.Application")]・・・AccessからExcelを操作したりデータの書き出しなどです
[VBAでOutlookの操作 CreateObject("Outlook.Application" )]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。

Excel関係:
[Excel UserFormを操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
[Excel関係 関数、その他]・・・その他Excel関係です

Access関係:
[Access UserForm/サブフォーム 操作]・・・アクセスでフォームを使ったサンプルです
[Access レポート操作]・・・レポートを操作してみました
[Access クエリーやその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

その他:VBAの共通関数やテキストファイルの操作など
[VBAでテキストファイル(TextFile)の操作]・・・普通のテキストファイルを使ったサンプルです
[VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます

開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う]

仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力]

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [VBAやASPのサンプルコード]/ 広告-[通販人気商品の足跡]



[三流君(TOP ken3.org へ戻る)] / [VBA系TOPへ] / [VBA系バックナンバー目次へ移動]