エクセル入力情報からWebサイトの会社概要のHTML文を生成するVBAプログラム


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

エクセルの入力情報をもとに自動で企業サイト向けトップページのHTMLを生成していきます。

  • Bootstrapを使ったWordPressによる企業向けサイト
  • service,plan,aboutの3つのセクションによるトップページ

という方針で進めております。

前回はこちらの記事。

エクセルVBAでインデントや改行を入れながらHTML文を追加していく便利関数を作る
エクセルVBAで自動でHTML生成シリーズです。今回はインデントや改行コードを入れながらHTML文を追加していく処理を関数化させつつ、Planセクションを生成するプログラムを作っていきます。

HTML生成の際の便利関数を作りつつ、serveceとplanまでのセクションを生成できるようになりました。

今回は会社概要をテーブルで組んでいるaboutセクションのHTMLを生成するVBAプログラムを進めていきます。

では、行ってみましょう。

スポンサーリンク

今回のお題:aboutセクションを作る

では今回のお題を確認していきます。

作成するセクションはこちらのaboutセクションです。

企業サイトによくある会社概要の部分ですね。

会社概要のaboutセクション

この部分に該当するHTML文を以下エクセルシートから生成するというものです。

aboutセクションの情報を記載したエクセルシート

エクセルシートを見る限り、簡単そうに見えますよね?

ですが、ここはテーブルで作られていますので、今までのserviceやplanセクションとは少し作り方が変わっちゃうんですよね。

aboutセクションのHTMLを生成する関数

Worksheetオブジェクトを受け取ってaboutセクションのHTMLを生成する関数はこちらです。

Function createAboutSection(ByVal ws As Object) As String

Dim str As String
str = ""

'section開始タグ
str = addHTML("", 0, "
") '***** セクションタイトルB1,セクション概要B2 ***** str = addHTML(str, 1, "

" & ws.Range("B1").Value & "

" & ws.Range("B2").Value & "

") '**** テーブル ***** 'tableの開始タグ str = addHTML(str, 1, "") Dim i As Long, j As Long For i = 5 To 9 '5~9行目まで繰り返し 'trの開始タグ str = addHTML(str, 2, "") For j = 1 To 2 '1~2列目まで繰り返し 'tdタグ str = addHTML(str, 3, "") Next j 'trの閉じタグ str = addHTML(str, 2, "") Next i 'tableの閉じタグ str = addHTML(str, 1, "
" & ws.Cells(i, j).Value & "
") 'section閉じタグ str = addHTML(str, 0, "
") & vbCr createAboutSection = str End Function

意外とシンプルにできましたね。

テーブルにする範囲が行方向は5~9行目、列方向は1,2列目(A,B列)ですから、i,jと二つのイテレータを使った入れ子のFor~Next文を使うことでプログラムの行数を減らしています。

HTML形式のテーブルの構造とその作り方について詳しく知りたい方は、こちらの記事もご参考頂ければと思います。

エクセルの表をHTMLのtableタグに変換して出力するVBAマクロ
HTMLファイルを作るときにtrやtdタグでテーブルを構成するの…面倒ですよね?今回はエクセルVBAでエクセルシート上の表をHTML形式のテーブルに変換して出力する方法をお伝えしたいと思います。

addHTML関数(おさらい)

ちなみに、プログラム内で使っているaddHTML関数は、前回作ったHTML文を追加していくときに便利な関数です。

Function addHTML(ByVal strBase As String, ByVal cntIndent As Long, ByVal strAdd As String) As String

If cntIndent > 0 Then

  Dim i As Long
  For i = 1 To cntIndent

  strBase = strBase & vbTab

  Next i

End If

strBase = strBase & strAdd & vbCr

addHTML = strBase

End Function

渡された文字列に指定された数のタブと指定の文字列、改行コードを追加して文字列として返す関数です。

実行結果

プログラムを実行するとイミディエイトウィンドウに

aboutセクションのHTMLの出力結果
と出力されます。

この出力されたHTML文をWordPressのテキストエディタに貼り付けてプレビューしてみますと

aboutセクションをWordPressでプレビュー

と正しく表示されます。

セル内改行コードVbLfをbrタグに置換する

ただ、正しく表示されているとはいえ

        
            業務内容
            ●業務効率化に関するコンサルティングおよびシステム提供
●研修/セミナーの開催・オンラインスクールの運営
●電子書籍事業に関するコンサルティングおよび各種業務
●WEBサイト企画・制作・運営・マーケティング
        

この部分のHTML文がガタガタしていて気持ち悪いですよね。

WordPressのテキストエディタは頭が良いので、これでもちゃんと表示してくれるのですが、プレーンのHTMLファイルにてブラウザで見てみると

aboutセクションをブラウザでプレビュー

このように改行がうまく反映されません。

HTML文としては、この部分はちゃんとbrタグを挿入しないとですね。

ということで、25行目をこのように修正します。

str = addHTML(str, 3, "" & Replace(ws.Cells(i, j).Value, vbLf, "
") & "")

Replace文を使ってVbLfコードをbrタグに置換しています。

これで出力をしたHTML文をブラウザで見てみましょう。

brタグ入りのaboutセクションをブラウザでプレビュー

無事にbrタグが機能して改行がされていますね。

まとめ

エクセルVBAを使ってエクセルの入力データからHTMLを生成するプログラムですが、今回は会社概要部分のaboutセクションを作成しました。

テーブルのHTML文を自動生成する処理と、VbLfコードをbrタグに置換する部分がポイントでした。

これで一通り完成になりますが、作るWebサイトによっては、全てこの型にはまるとは限りませんよね。

次回以降は、このエクセルシートとVBAプログラムに汎用性を持たせられるようにバージョンアップしていきたいと思います。

【エクセルVBA】シートの開始行や行数の変更があってもちゃんと動く繰り返し文の書き方
エクセルではワークシートの運用上、行の挿入や行の追加が発生することが多々あります。今回はエクセルVBAでワークシートの開始行や行数の変更があっても繰り返し処理がちゃんと動くプログラムの作り方です。

どうぞお楽しみに!

連載目次:エクセルの入力情報からVBAでHTML文を自動生成

企業向けのWebサイトを作る際、エクセルの入力情報を元に自動でHTMLコードを生成できれば楽ですよね。本シリーズではBootstrapを使ったシングルページを想定してコードを生成するVBAプログラムを作っていきます。
  1. エクセルVBAでWordPress投稿用HTMLソースを自動で生成する
  2. エクセルVBAでインデントや改行を入れながらHTML文を追加していく便利関数を作る
  3. エクセル入力情報からWebサイトの会社概要のHTML文を生成するVBAプログラム
  4. 【エクセルVBA】シートの開始行や行数の変更があってもちゃんと動く繰り返し文の書き方
  5. カラム数を指定してBootstrapのグリッドシステムを使ったHTMLを生成するエクセルVBA

タイトルとURLをコピーしました