パソコンカレッジ スタッフのひとりごと

パソコンスクールのスタッフが、
初心者から上級者まで役立つ情報をお伝えします。

テーブルタグ自動生成システムをつくろう(Excel2002以降)

2010-09-30 08:54:10 | ExcelVBA
おはようございます。

仕事柄、Webページを制作します。

市販のソフトは使わずに、htmlを手入力して制作しております。
めんどくさいのは、表の作成です。そう、タグです。
もちろん、レイアウトのために使うのではありません。
純然たる表ですよ。

以下の図のようなHTMLです。

テーブルの構造は、規則的ですね。




そこで、Excelの表を使って、HTMLを自動生成するプログラムを作ってしまおうというのが、今日の課題です。



さて、Excelで表を作るのは、簡単ですよね。

以下の図は、例です。






Excelで作成した表の全部をHTMLにしてもいいのですが、自由度を増すために、あらかじめ選択した範囲をHTMLにしてみます。

こんなときは、ユーザー定義関数を作成するのがおすすめです。

以下のように書いてみましょう。



Private Function CreateTable(Rng As Range) As String
    '引数で指定したセル範囲をテーブルにする
    
    '引数のセル範囲の行数と列数を取得
    Dim r As Integer, c As Integer
    r = Rng.Rows.Count
    c = Rng.Columns.Count
    
    '引数のセル範囲の開始行と開始列を取得
    Dim startRow As Integer
    Dim startColumn As Integer
    startRow = Rng.Range("A1").Row
    startColumn = Rng.Range("A1").Column
    
    '変数sに、生成したHTMLを格納
    Dim s As String
    s = "
" & vbNewLine Dim i As Integer, j As Integer For i = startRow To startRow + r - 1 '行の始めは s = s & "" '列数分、セルの値をで囲む For j = startColumn To startColumn + c - 1 s = s & "" Next '行の終わりは s = s & "" & vbNewLine Next s = s & "
" s = s & Cells(i, j).Value s = s & "
" CreateTable = s '関数の戻り値にsを指定 End Function


繰り返し処理をうまく使いましょう。

一応、画像も載せておきます。




それでは、作った関数を使ってHTMLを書き出しましょう。

せっかくですから、テキストファイルに書き出して保存できるようにします。

そうすれば、あとで自由に使用することができますね。

以下のコードを書いてください。



Sub main()
Dim fName As String
'保存用ダイアログボックスを表示
fName = Application.GetSaveAsFilename("table.txt","テキストファイル(*.txt),*.txt",,"テキストファイルの保存")
'キャンセルボタンが押されたら、終了
If fName = "False" Then Exit Sub

'ファイルに書き込み
Open fName For Append As #1
'ここで、作成した関数を使用
Print #1, CreateTable(Selection)
Close #1
End Sub


画像は、下です。




ExcelVBAには、開くためのダイアログボックスと保存するためのダイアログボックスが用意されています。
これを使います。

また、ファイル処理には、独特のステートメント(構文)を使います。
(親分のVB.NET は、もっとシンプルで楽な構文に変わりましたけど・・・)

それでは実行してみましょう。

まず、表の任意の部分を選択してください。この選択範囲が、HTML化されます。
それでは、マクロを実行します。




保存先の選択ダイアログボックスが表示されます。
任意の保存先を指定し、ファイル名を自由に指定してください。
(キャンセルすると、保存されません。)




あっという間に、保存されますよ。

保存されたテキストファイルを開いてみましょう。
ちゃんと、HTMLが生成されているのが分かります。




エクセルって、こんなときにも役に立つんですね。



だい

コメント (6)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« スペックだけでは分からない... | トップ | 過去のお勧め記事 »
最新の画像もっと見る

6 コメント

コメント日が  古い順  |   新しい順
Unknown (チョイ悪オヤジ)
2010-09-30 23:31:59
いつもスゴク勉強させてただいているチョイ悪オヤジです^^


今日の記事もかなり!ためになると思います!

これからも色んな事をブログでおしえてください~^^お願いしま~す@^^@
返信する
チョイ悪オヤジさんへ (だい)
2010-10-01 17:36:57
コメントありがとうございます。

これからも遊びに来てくださいね。
こちらこそよろしくお願いします。
返信する
留守にしていて (fuworld)
2010-10-03 01:54:23
こんにちは

 Hさんご面倒をおかけしてすみませんでした。

 お蔭様でアメリカ、カナダ、での更新が出来ました。

 今日はこっち明日はあちらで毎日の更新は出来ませんでした。

 Nさんのご好意甘え2泊3日ではカナダはナイアガラにトロントにも行きたかったですが

 ナイヤガラで1日は小雨でしたので、NIAGARA on thr lakeを(オンタリオ湖)観光で3日間終わりです。

 走行距離720キロ走りました。

 早いもので明日で15日間の旅が終わりに、

 Nさんはもう少し居たらと言ってくれますが、取りあえずは帰る予定です。
返信する
fuworldさんへ (ケン)
2010-10-03 14:58:40
コメントありがとうございます。

海外でブログの更新ができて良かったですね。
気をつけて帰ってきてください。
返信する
こんばんは (うつらうつら)
2010-10-05 01:40:58
私もExcelでHTML文を生成させる場合があります。


しかしVBAを使って…ではなく、「&」を使って文字結合させるだけです。

コマンドプロンプトから、アップしたい写真のフォルダにて DIR > a.txt などとリダイレクトした結果を、テキストエディタで矩形選択してExcelに貼り付けて…としてますが、マクロを1つ作っておくと便利ですよね(^^)

勉強になりました。
ありがとうございました(^^)
返信する
うつらうつらさんへ (だい)
2010-10-07 14:11:14
なるほど、うまい方法を考えましたね。
連係プレーの妙味ですね。

さすがです。

また、いろいろな方法や考え方を押してください。僕も勉強になります。

ありがとうございました。
返信する

コメントを投稿

ExcelVBA」カテゴリの最新記事