VisualBasic for Applications (Microsofot Excel編)
第4回
はじめに
いきなり難しくなりますが、(使えるようになりますが)JavaScriptを使用して検索 スクリプトを作ってみます。データはマイクロソフトExcel(以下Excel)を使用してつくります。 データ管理はExcelやマイクロソフトAccessを使用した方が管理しやすいからです。 データが変更された場合にはExcelで変更したデータからVBAを使ってJavascript付きのHTML ファイルを出力し、Webサーバー等にアップロードすれば良いわけです。
以下のようなサンプルを使います。
以下のようなExcelの表があるとします。A列が用語でB列が金額とします。 HTML内でA列内のキーワードを検索して該当するA、B列の表を表示するとします。
| A | B | |
| 1 | りんご | 100 |
| 2 | みかん | 40 |
| 3 | ばなな | 50 |
| 4 | もも | 150 |
VBAでは以下のようなプログラムを行います。
Sub htm_sam()
Dim i , j As Integer
Dim html As String
Dim file_name As String
Dim file_num As Integer
Dim cr As String
Dim Col As Integer
Dim Row As Integer
Rem ********初期設定を行います********
cr = Chr(13) & Chr(10)
Row = 4 '行数
Col = 2 '列数
file_name = "c:\sample.htm" 'htmlファイルの保存先
Rem ********HTMLファイル用のハイパーテキスト作成********
html = "<html><head><title>検索スクリプトサンプル</title>"
& cr
html=html & "<script language=JavaScript>"
& cr
html=html & "<!--" & cr
html=html & "var Row=" & Str(Row-1) &
";" & cr
html=html & "var Col=" & Str(Col-1) &
";" & cr
html=html & "db = new Array();" & cr
html=html & "for(i=0;i<=" & str(Row) &
";i++)" & "{db[i] = new Array();}" &
cr
for i = 1 to Row
for j=1 to Col
html=html & "db[" & str(i-1) &
"]["& str(j-1) & "]=" &
"'" & Cells( i , j ) & "';" & cr
Next j
Next i
html = html & "function ser(ken){" & cr
html = html & "var ht='<table border=1>';"
& cr
html = html & "for(i=0;i<=Row;i++){" & cr
html = html & "if (db[i][0].indexOf(ken)!=-1){"
& cr
html = html & "ht+='<tr><td>' + db[i][0] +
'</td><td>' + db[i][1] +
'</td></tr>';" & cr
html = html & "}" & cr
html = html & "}" & cr
html = html & "ht+='</table>';" & cr
html = html & "document.open();" & cr
html = html & "document.write(ht);" & cr
html = html & "document.close();" & cr
html = html & "}" & cr
html=html & "//-->" & cr
html=html & "</script>" & cr
html=html & "</head>" & cr
html = html & "<body>" & cr
html = html & "<p>Excelからの検索スクリプトサンプル</p>"
& cr
html = html & "<form name='myform'>" & cr
html = html & "検索文字入力:<input type=text
name='tx'>" & cr
html = html & "<input type=button value='検索'
onClick='ser(document.myform.tx.value)'>" & cr
html = html & "</form>" & 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からの検索スクリプトサンプル
|
みか と入力して、検索ボタンをクリックした結果
|
解説
やはり、かなり強引なプログラムだと自分でも思います。VBAからJavascriptとHTMLを出力していますのでプログラムしている最中でもこんがらがってしまいます。
上記はかなりややこしく感じられるので、次回はHTMLファイル(Javascript付き)とデータファイル(.js)にわけて、VBAから.jsファイルのみを出力し、.htmlファイルから.jsファイルをインクルード(取り込み)するプログラムにすると、シンプルでわかりやすくなります。