質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

3283閲覧

【HTML,VBS】テキストファイルをVBSで出力する機能をHTMLに置き換えて、Web(IE)からでも出力できるようにしたい。

suzumi1

総合スコア6

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/06/06 13:17

編集2020/06/06 13:22

初投稿失礼します。
タイトルのように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に直し、テキストファイルの内容を出力することについての内容が見当たりませんでしたので、以上の内容を質問をさせていただきました。

知っている方がいましたら、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

元のコードにはないバグが3つあります。

html

1<SCRIPT TYPE="text/VBScript" language= "VBScript")

ここの)>に直してみてください。

vbscript

1srhLine = srhLine & tmpLine & "<br>"

ここの"<br>"(改行を表すHTML文字列)をvbCR(改行文字)に戻してみてください。
TEXTAREAvalueに代入する値はHTML文字列ではなく単純な文字列となります。

vbscript

1document.form.result.value = tmpLine

ここのtmpLinesrhLineに直してみてください。

これでひとまず動くようになりますがまだ期待通りの動作ではないはずです。
残りのバグは元のコードにもあるバグなのでVBScriptの基礎知識だけで直せます。
自習頑張りましょう!

投稿2020/06/06 16:21

reosablo

総合スコア339

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

suzumi1

2020/06/06 23:47

ありがとうございました! Webの方で操作すると、 空白の場合の「検索処理に失敗しました」、適当な文字列を入力の場合の「データがありません」が表示されるようになりました! 後はテキストファイルの文字列を読み取ってテキストエリアに表示をさせるだけなのですが、 VBS側の問題ということで、もう少し試行錯誤してみます。 ご回答いただき、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問