エクセルVBAでインデントや改行を入れながらHTML文を追加していく便利関数を作る

★気に入ったらシェアをお願いします!

price

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

エクセルVBAで自動でHTML生成をするといったことを進めています。

具体的には

  • Bootstrapを使ったWordPressによる企業向けサイト
  • service,plan,aboutの3つのセクションによるトップページ
  • エクセルの入力情報から自動生成する

といった方針です。

前回はこちらの記事で、serviceセクションを作りました。

エクセルVBAでWordPress投稿用HTMLソースを自動で生成する
WordPressサイトのソースをエクセルVBAで自動生成する方法についてのシリーズ。初回の今回ですが、エクセルの入力情報をもとにシングルページの1つのセクションについて自動でコード生成をする方法です。

ただちょっと、文字列連結のアンパサンド(&)がたくさんあって見づらいんですよね。

今回は、タブコードや改行コードを入れながらHTML文を追加していく処理を関数化してスッキリさせつつ、Planセクションを生成するプログラムも作っていきたいと思います。

では、よろしくお願いいたします!

前回のおさらい:ServiceセクションのHTMLを生成する

前回のプログラムのおさらいです。

メインのプロシージャがこちら。

生成されたHTMLがイミディエイトウィンドウに出力されます。

serviceセクションを生成する関数createServiceSectionはこちらです。

…やっていることは文字列の連結なので、さほど難しいことをしているわけではないのですが、タブコードvbTabや改行コードvbCrなども入れるとアンパサンド(&)が多くなり見づらいですね。

まずはこの文字列の連結を関数化することでスッキリしていきましょう。

HTML文への文字列連結をする関数addHTML

createServiceSectionの各行は元の文字列strに文字列を追加していくという処理ですが

  • 元の文字列の後ろに文字列を一行ずつ追加する
  • 各行の冒頭にタブコードvbTabが0~3つ入る
  • 各行の最後は改行コードvbCr

という法則性があります。

したがって、この処理を関数化することでコードをスッキリさせることができそうです。

この後に作るであろうplanセクションやaboutセクションのHTML生成にも便利ですし、後で読み返すときやメンテナンスするときに簡潔に書いておくほうが良いからです。

脱プログラミング初心者のためのバイブル「リーダブルコード」のススメ
とにかくプログラマーというプログラマーが皆さんオススメしまくっている本「リーダブルコード」。その名のとおり「読みやすいコード」を書くための実践的なテクニックを凝縮している本書について紹介します。

関数addHTMLのプログラム

その部分を関数化したaddHTMLはこちらです。

各引数は

  • strBase:元のHTML文字列
  • cntIndent:タブコードの数
  • strAdd:追加する特定の文字列

として与えれます。

この関数では元の文字列に

  1. 必要な数のタブコードを追加
  2. 特定の文字列を追加
  3. 改行コードを追加

して文字列を返します。

addHTMLを使ってcreateServiceSectionを書き直す

関数addHTMLを使ってcreateServiceSectionを書き直すと、このようになります。

少しわかりやすくなりましたね。

planセクションを生成するプログラム

では、続いてplanセクションを生成するプログラムを作っていきます。

エクセルシートはこのように準備しました。

planセクションのテキスト情報

planセクションはserviceセクションと同じく4カラムで、類似しています。

プランノーツサイトのplanセクション

異なる点としては、サムネイルとタイトルの順番が異なり、小さめの文字フォントで金額が記載されているという点です。

ですから、createServiceSectionをコピーして必要箇所の書き換えや行の入れ替えをすればできそうです。

planセクションを生成するcreatePlanSection

planセクションを生成するcreatePlanSectionはこちらです。

実行により出力されたデータをWordPressでプレビューしてみます。

生成したplanセクションのHTMLソースのプレビュー
バッチリですね。

まとめ

エクセルVBAで自動でHTML生成をするプログラムですが、今回はserviceセクションの文字列連結部分を関数化してスッキリさせるとともに、それを活用してplanセクションを生成する関数を作成しました。

あとトップページに関してはaboutですね。

次回、お伝えしていきたいと思います。

エクセル入力情報からWebサイトの会社概要のHTML文を生成するVBAプログラム
エクセルの入力情報をもとに自動で企業サイト向けトップページのHTMLを生成していきます。今回は会社概要をテーブルで組んでいる箇所のHTMLを生成するVBAプログラムの作成を進めていきます。

お楽しみに!

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

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