初投稿失礼します。
タイトルのようにVBSで作成したものをHTMLに置き換えて、同じような機能をWeb(IE)でもできるようにしたいのですが、うまくいきません。
内容は、住所録(txtまたはcsvで作成したもの)をVBSで検索機能をつけて、
検索したキーワードと一致した内容を表示するというシンプルなものです。
VBSをはじめたきっかけはプログラミングを学び始め半年程度なのですが、
スクリプト言語を自習で学ぶために基礎としてVBScriptをする機会があり、
上記のようにわからないことがあったので質問させていただきました。
OS:win7を使用
ブラウザ:IE(VBSは基本的にIEでしか動作しないようですのでIEでお願いします)
###参照にするテキストファイル
test.txt(タブ区切り)
佐藤太郎 サトウタロウ 愛知県 名古屋市 111-1111 鈴木花子 スズキハナコ 愛知県 豊橋市 222-2222 田中大吾 タナカダイゴ 愛知県 知多市 333-3333 渡辺明里 ワタナベアカリ 静岡県 伊豆市 444-4444 中野奈々 ナカノナナ 静岡県 熱海市 555-5555 清水青助 シミズアオスケ 静岡県 浜松市 666-6666 小島優香 コジマユウカ 三重県 四日市市 777-7777 海老史郎 エビシロウ 三重県 伊勢市 888-8888 大島健司 オオシマケンジ 岐阜県 大垣市 999-9999 浅野麻子 アサノアサコ 岐阜県 飛騨市 000-0000
###VBSで作成したソースコード
strPath = InputBox("キーワードを入力してください","住所録検索") Set objFS = CreateObject("Scripting.FileSystemObject") Set objText = objFS.OpenTextFile("c:\test.txt",1) Set regEx = New RegExp regEx.Pattern = strPath regEx.Global = True regEx.IgnoreCase = True If strPath <>"" Then Do Until objText.AtEndOfStream tmpLine = objtext.ReadLine If instr(tmpLine,strPath) <>0 Then srhLine = srhLine & tmpLine & vbCR MsgBox(tmpLine) Else MsgBox("データがありません") Exit Do End If LOOP Else MsgBox("検索処理に失敗しました") End If objText.close
InputBoxからテキストファイルにあるキーワード(部分一致)を入力すると、
部分一致した一行が、検索結果として一行ずつ表示されるようになっています。
最後に「データがありません」とウィンドウ表示がされて終了します。
(本当は一括ですべて表示したかったのですが、今回の質問とは別ですのでそのままです)
ちなみに、InputBoxで未入力の場合はどのボタンを押しても「検索処理に失敗しました」と表示されます。適当な文字列を入力すると、「データがありません」と表示されて終了します。
以上のような機能を、HTMLを使用してWeb表示(IE10)でできるようにするというのが今回の質問となります。
長くなり申し訳ありません。
###本題のHTMLに置き換えたソースコード
<HTML> <HEAD> <meta http-equiv="X-UA-Compatible" content="IE=10"> <TITLE>住所録検索</TITLE> <SCRIPT TYPE="text/VBScript" language= "VBScript") SUB getValue() Set objFS = CreateObject("Scripting.FileSystemObject") Set objText = objFS.OpenTextFile("c:\test.txt",1) Set regEx = New RegExp strPath = document.form.search.value regEx.Pattern = strPath regEx.Global = True regEx.IgnoreCase = True If strPath <>"" Then Do Until objText.AtEndOfStream tmpLine = objtext.ReadLine If instr(tmpLine,strPath) <>0 Then srhLine = srhLine & tmpLine & "<br>" document.form.result.value = tmpLine Else document.form.result.value ="データがありません" Exit Do End If LOOP Else document.form.result.value("検索処理に失敗しました") End If objText.close End Sub </SCRIPT> </HEAD> <FORM NAME = "form" > <BODY> 住所録の検索を行います<br> ・キーワードを入力してください。<br> <INPUT TYPE="text" NAME="search" SIZE="100" /> <br> <br> <INPUT TYPE="button" NAME="btnS" VALUE="検索" onClick="getValue()" /> <SPACER SIZE="10" TYPE="horizontal"> <INPUT TYPE="reset" Value="キャンセル" /> <br> <br> <br> <br> 検索結果(名前、名前(カタカナ)、都道府県、市町村、郵便番号) <br> <TEXTAREA NAME ="result" ROWS="10" COLS="100" ></TEXTAREA> </BODY> </FORM> </HTML>
以上となります。
しかし、VBSでの機能のように動作しませんでした。
このソースコードで入力すると、HTMLでのレイアウト(検索欄、検索結果を表示するテキストエリア、ボタン、リセットボタン)は表示されるのですが、テキスト結果の内容が表示されません。
エラーを確認する「On Error Resume Next」でどんなエラーがでるか確認をすると、
Microsoft VBScript 実行時エラー: オブジェクトがありません。
と表示されていました。未入力、適当な文字列、特定のキーワードを入れても、テキストのデータが表示されませんでした。
調べても、一つのキーワードで複数の行の表示、HTMLに直し、テキストファイルの内容を出力することについての内容が見当たりませんでしたので、以上の内容を質問をさせていただきました。
知っている方がいましたら、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/06 23:47