VisualBasic for Applications (Microsofot Excel編)
第3回
はじめに
EXCELにはHTML形式で保存する機能がありますが、これをあえてVBAで実行してみます。VBAで実行させるメリットとして、EXCELからHTML変換した場合には正しく変換できないことがあることと、定型業務においてはVBAで作業させるとかなり威力を発揮する事ができます。
いきなりサンプル
以下のようなExcelの表があるとします。C列がハイパーリンク先で、B列にハイパーリンクを設定するとします。
| A | B | C | |
| 1 | 設備 | 給湯機の説明 | kyuutou.htm |
| 2 | 外部 | 窓の説明 | mado.htm |
| 3 | 外部 | 屋根の説明 | yane.htm |
| 4 | 内部 | 建具の説明 | tategu.htm |
VBAでは以下のようなプログラムを行います。
Sub htm_sam()
Dim i As Integer
Dim html As String
Dim file_name As String
Dim file_num As Integer
Dim cr As String
Rem ********初期設定を行います********
cr = Chr(13) & Chr(10)
file_name = "c:\sample.htm"
Rem ********HTMLファイル用のハイパーテキスト作成********
html = "<html><head><title>Excelからのサンプル出力</title></head>"
& cr
html = html & "<body>" & cr
html = html & "<p>Excelからのサンプル出力</p>"
& cr
html = html & "<table border='1'>" & cr
For i = 1 To 4
html = html & "<tr>" & cr
html = html & "<td>" & Cells( i , 1 )
& "</td>" & cr
html = html & "<td><a href='" &
Cells(i,3) & "'>" & Cells( i , 2 ) &
"</a></td>" & cr
html = html & "</tr>" & cr
Next i
html = html & "</table>" & cr
html = html & "</body>" & cr
html = html & "</html>" & cr
Rem ********HTMLファイル出力を行います********
file_num = FreeFile()
Open file_name For Output As #file_num
Print #file_num , html
Close #file_num
Rem ********プログラム終了********
End Sub
実際のHTML出力結果
Excelからのサンプル出力
|
解説
実際のところ、かなり強引なプログラムだと自分でも思います。が、定型業務作業ではいろいろと応用すればかなり実用的です。(本当はExcelではなく、AccessでHTML出力プログラムを作ったほうが威力を発揮します。)
改行のため、変数crにキャラクタコード13(改行)とキャラクタコード10(ラインフィーダ)を格納して使用しています。変数HTMLに、完全なHTML構文を使ってHTML文章を格納し、最後にファイルへ出力します。ファイル出力には、使用可能なファイル番号を取得(FreeFile関数)して、そのファイル番号を用いて出力します。