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

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

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

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

Q&A

解決済

2回答

645閲覧

VBSのtxtファイル操作がHTMLではできないのがなぜか知りたい。

suzumi1

総合スコア6

VBScript

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

0グッド

0クリップ

投稿2020/06/08 15:02

失礼します。
前回はHTMLでの表示について聞きましたが、今回はVBSのみの質問です。
前回の質問: https://teratail.com/questions/268088

VBSについて学んでいるのですが、
テキストファイルの文章のキーワードを検索欄(InputBox)に入力し、
一括でテキストファイルの任意の行を表示させるような機能を作成していました。
前回、ご解答くださったかたのおかげで、HTMLに置き換えてWeb表示で検索できるようになりましたが、
肝心のテキストファイルが読み込めず、キーワードを入力しても反応しませんでした。

自分が勉強不足なので、1日試行錯誤してみましたが、解決方法は見つからず、完成には至りませんでした。

###VBSのソースコード

VBscript

1strPath = InputBox("キーワードを入力してください","住所録検索") 2Set objFS = CreateObject("Scripting.FileSystemObject") 3Set objText = objFS.OpenTextFile("c:\test.txt",1) 4Set regEx = New RegExp 5regEx.Pattern = strPath 6regEx.Global = True 7regEx.IgnoreCase = True 8If strPath <>"" Then 9 Do Until objText.AtEndOfStream 10 tmpLine = objtext.ReadLine 11 If instr(tmpLine,strPath) <>0 Then 12 srhLine = srhLine & tmpLine & vbCR 13 MsgBox(srhLine) 14 Else 15 MsgBox("データがありません") 16 Exit Do 17 End If 18 LOOP 19Else MsgBox("検索処理に失敗しました") 20End If 21objText.close

VBSファイルとして扱うと、任意のキーワードを入力→表示となりますが
Web(IE)での表示からするとうまく起動せず、方法が思いつきませんでした。

(例)VBSファイルで、「愛知県」と入力(以下が表示されます。前回の質問にtxtファイルサンプルがあります)
佐藤太郎 サトウタロウ 愛知県 名古屋市 111-1111
鈴木花子 スズキハナコ 愛知県 豊橋市 222-2222
田中大吾 タナカダイゴ 愛知県 知多市 333-3333

そこからHTMLに変えるとVBScriptがうまく動作しなくなります。
上記のVBSで改善策や起動しない原因がわかりましたら、なにかご教授願います。
勉強不足で申し訳ありません。

HTMLのソースコードも添付しておきます。
前回の質問で修正したものとなります。

HTML、VBScript

1<HTML> 2<HEAD> 3<meta http-equiv="X-UA-Compatible" content="IE=10"> 4<TITLE>住所録検索</TITLE> 5<SCRIPT TYPE="text/VBScript" language= "VBScript"> 6SUB getValue() 7 8Set objFS = CreateObject("Scripting.FileSystemObject") 9Set objText = objFS.OpenTextFile("c:\test.txt",1) 10Set regEx = New RegExp 11strPath = document.form.search.value 12regEx.Pattern = strPath 13regEx.Global = True 14regEx.IgnoreCase = True 15 16If strPath <>"" Then 17 18 Do Until objText.AtEndOfStream 19 tmpLine = objtext.ReadLine 20 If instr(tmpLine,strPath) <>0 Then 21 srhLine = srhLine & tmpLine & vbCR 22 document.form.result.value = srhLine 23 Else 24 document.form.result.value ="データがありません" 25 Exit Do 26 End If 27 LOOP 28 29Else 30document.form.result.value = "検索処理に失敗しました" 31 32End If 33 34objText.close 35End Sub 36</SCRIPT> 37</HEAD> 38<FORM NAME = "form" > 39<BODY> 40住所録の検索を行います<br> 41・キーワードを入力してください。<br> 42<INPUT TYPE="text" NAME="search" SIZE="100" /> 43<br> 44<br> 45<INPUT TYPE="button" NAME="btnS" VALUE="検索" onClick="getValue()" /> 46<SPACER SIZE="10" TYPE="horizontal"> 47<INPUT TYPE="reset" Value="キャンセル" /> 48<br> 49<br> 50<br> 51<br> 52検索結果(名前、名前(カタカナ)、都道府県、市町村、郵便番号) 53<br> 54<TEXTAREA NAME ="result" ROWS="10" COLS="100" ></TEXTAREA> 55</BODY> 56</FORM> 57</HTML>

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

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

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

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

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

guest

回答2

0

手元の環境で試したところテキストファイルは無事に読み込めました。
(ハイフン"-"や"県"で検索すると期待通りすべての結果が表示されました。)

質問文には記載の無い、アクセス権限やセキュリティの設定が違うかもしれませんが無闇に大事な設定を変えないほうがよいでしょう。
下記の策ではいかがでしょうか?

案1. HTMLファイルの拡張子を".hta"に変えてダブルクリックで起動してみる
案2. test.txtの保存場所を"C:\Users(アカウント名)"以下のどこかのフォルダに変えてみる

ちなみに、HTMLファイルのほうのSUB getValue()からEnd Subの間を丸ごとそのまま元のVBScriptスクリプトに置き換えても元のスクリプトと全く同じ動作をするようなので原因を探るのに役立つかもしれません。

投稿2020/06/08 15:59

reosablo

総合スコア339

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

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

suzumi1

2020/06/09 11:52

HTMLをhtaに変更したらうまく動きました!ありがとうございました! スクリプトの中のも変えて、ちょっと試してみます。前回に続きありがとうございました!
guest

0

ベストアンサー

気づく間違いとしては、
・HTMLでは、BODYFORMの包含関係がおかしい
・検索部分のコードが全然駄目
・多分影響ないが、srhLineが初期化されてない

検索部分を書き直すと、

VBScript

1srhLine = "" 2document.form.result.value = "データがありません" 3Do Until objText.AtEndOfStream 4 tmpLine = objtext.ReadLine 5 If instr(tmpLine,strPath) <> 0 Then 6 srhLine = srhLine & tmpLine & vbCRLF 7 document.form.result.value = srhLine 8 End If 9LOOP

IEで動かすより、HTAアプリにしたら良いんじゃ無いでしょうか?
拡張子をHTAにして起動します。

投稿2020/06/08 15:49

otn

総合スコア84538

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

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

otn

2020/06/09 02:02

インターネットオプションで、スクリプトが実行できるようセキュリティは弱めてますよね?
suzumi1

2020/06/09 11:54

返信が遅くなりました!HTAアプリにしたら正常に動作しました! ご指摘ありがとうございました! セキュリティによって実行できなくなるのは知りませんでした。 インターネットオプションは触ってないので、弱めてはないと思いますのでそちらも試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問