• 締切済み

【VBS】別ファイルから1行取得後HTML出力

お世話になります。 プログラム初心者です。 下記条件でプログラムを作成しましたが、表示がされなくて困っています。 ■VBSはHTML内に組み込み ■別ファイル(C:\vbs\version.txt)から1行読み込みHTMLで指定位置に表示 以下、プログラムです。(HTMLに関しては省略あり) <HTML> <HEAD> </HEAD> <TITLE>テスト</TITLE> <BODY> 略 <script language="VBScript"> <!-- Dim objData Dim objFSO ' FileSystemObject Dim objFile ' ファイル読み込み用 Sub SetVersion() Set objFSO = CreateObject("Scripting.FileSystemObject") Set objData = document.GetElementById("myData") Set objFile = objFSO.OpenTextFile("C:\vbs\version.txt") objData.innerText = objFile.ReadLine 'ファイル読み込み表示用 End Sub --> </script> <!--表示--> <span onload="SetVersion()" style="POSITION:absolute; top:120px; left:884px; font-size: 15pt; font-weight:bold; color:white; width: 96px; height: 48px;"> <CENTER> <FONT color="#ffffff" Size="2"> <div id="myData"></div> </FONT ></CENTER> </span> 略 </BODY> </HTML> 実行しても何も表示されません。 どこがおかしいのでしょうか? ご教授いただければと思います。

みんなの回答

noname#259269
noname#259269
回答No.1

span に onload イベントは使えません。普通 body に指定します。 あと、この HTML はサーバにあげて利用するんでしょうか? それだったら表示するブラウザ側に version.txt が必要になってきますが。。。

damedame_sao
質問者

お礼

早速のご回答有難うございます。 span に onload イベントは使えません。 ⇒そうみたいです。大変申し訳ないです・・・。 bodyに指定すると他のVBSに影響してしまいうまく表示できていたものも表示出来なくなってしまうので、他の方法があればよいのですが・・・。 とりあえず、私のPC内で完結できれば大丈夫です。 サーバにあげる場合は、もちろんブラウザ側に置く予定になっております。

関連するQ&A

  • VBSでのファイル読込、出力操作について

    いつもありがとうございます。 掲題の件について、ご教授頂けますでしょうか。 下記のように『start.vbs』を実行すると『a.txt』の行に記載されている実行ファイル名を読み込み 『test.vbs』にファイル名分のコマンドを書き込みしたいです。 例) ----------------------------- start.vbs (作成途中) ----------------------------- Set objWShell = CreateObject("wscript.shell") Set objFso = CreateObject("Scripting.FileSystemObject") Set objFile = objFso.OpenTextFile("c:\a.txt", 1, False) ' 出力先ファイル Set objVBSFile = objFSO.CreateTextFile(c:\test.vbs, True) If Err.Number > 0 Then WScript.Echo "Open Error" Else Do Until objFile.AtEndOfStream objVBSFile.WriteLine(objFile.ReadLine) Loop End If ----------------------------- a.txt ----------------------------- adobe.exe photoshop.exe ****.exe    ・    ・    ・ ------------------------------ start.vbs ------------------------------ objWShell.Run "cmd.exe c:\adobe.exe ", 0, True objWShell.Run "cmd.exe c:\photoshop.exe ", 0, True objWShell.Run "cmd.exe c:\****.exe ", 0, True    ・    ・    ・ vbsをサイトを参考にして作ってはいるものの、start.vbsを実行すると a.txtのファイル名をvbsに書き込むのが限界です。 少しずつ勉強していくのですが、本件少し早めに作りたいという背景があり ご教授頂けませんでしょうか。 また、わかりにくい説明となっておりますが どうぞ宜しくお願い致します。

  • VBSでファイル作成後、書き込みできない

    ファイルが存在している場合は、ファイルをオープンして書き込み、ファイルが存在していない場合は、ファイルを作成後、オープンして書き込みを行わせたいと考えています。 しかし、ファイルが存在していないとき、ファイルは作成されるのですが、『エラー:800A0046 書き込みできません。VBScript実行時エラー』が出て、書き込みができません。モードをWritingにしても同じでした。 お手数をおかけしますが、ご教示いただけますようお願いいたします。 Option Explicit '■ オブジェクトの宣言 Dim objFSO Dim objFile '■ 定数の宣言 Const strFileName = "C:\VBS\TEST.TXT" '■ 定数の宣言 '// ファイル入出力モード(8:追加書き込み) Const ForAppending = 8 Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FileExists(strFileName) Then WScript.Echo "ファイルが見つかりました" Else WScript.Echo "ファイルが見つかりませんでした" Set objFile = objFSO.CreateTextFile(strFileName) If IsObject(objFile) Then WScript.Echo "ファイルを作成しました" Else WScript.Echo "ファイルを作成できませんでした" WScript.Quit(1) End If End If '// ファイルのオープン Set objFile = objFSO.OpenTextFile(strFileName,ForAppending) objFile.WriteLine "2012/12/21,100,ブレーキパッド,35000"

  • VBSで、凝ったHTMLを出力する!

    いつも大変お世話になっております。 上手く説明できない点もあるかと思いますが、 よろしくお願い致します。 現在、色々とプログラムを組むことが多く、 毎回調べては書いて…の繰り返しのため 良く使うもの・便利だったものはメモ帳などに貼り付けて 保存してあります。 しかし、この状態では メモ帳が大量にあり探すのにとても苦労しますし、 内容もとても見づらいものになってしまいます。 現在、同フォルダにあるTXTファイルを自動的にHTMLに変換するVBSと 同フォルダにあるファイルのリンクを作成し、一覧をHTMLにするVBSを作りました。 少しずつ便利にはなってきていますが、 やはり見づらさという点では変わりありません。 そこで、やりたいこととしまして ・ジャンル別に分けたい。 (できればツリー状にして表示したい) ・2フレームで作成したい。(左側に目次、選択したものを右側に表示) 全自動でHTMLファイルを作成しようと思っているのですが、 さすがにむずかしいでしょうか? 例えば HTML化用ファイル   |   |--「HTMLファイルをここに作成」   |   --TEST     |      ------ブック     |    |___新規ブック.html     |    |     |    |___ブック名編集.html     |      ------シート     |    |___新規シート.html     |    |     |    |___シート編集.html     |    |     |    |___シート保護.html     |    |     |    |___シートコピー.html     |    |     |    |___シート削除.html     |         |         |          ------目次3     |      ------目次4     |      ------目次5 ----------------------------------------- 【理想】           |    TEST    |      |     |       ------ブック   |     |    |___新規ブック.html | クリックしたHTMLの内容表示     |    |    |     |    |___ブック名編集.html |     |     |      ------シート   |     |    |___新規シート.html |     |    |    |     |    |___シート編集.html |     |    |    |     |    |___シート保護.html |     |    |    |     |    |___シートコピー.html |     |    |    |     |    |___シート削除.html  |     |        |     |        |     |        |      ------目次3  |     |     |      ------目次4  |     |     |      ------目次5  | ↑↑ 折りたたむことも可能↑↑ 今は、同じフォルダ内にあるものを HTML化することはできています。 ------------------- Sub TEST2() Dim strScriptPath'自分の現在位置 strScriptPath = Replace(WScript.ScriptFullName,WScript.ScriptName,"")'フルネームから、スクリプトネームを削除! ' フォルダをオブジェクト取得 Set objFso = CreateObject("Scripting.FileSystemObject") Set objFolder = objFso.GetFolder(strScriptPath) Set HTMLOutPutData = objFso.CreateTextFile("ファイル一覧.html",True) HTMLOutPutData.WriteLine "<html>" HTMLOutPutData.WriteLine "<head>" HTMLOutPutData.WriteLine "<title></title>" HTMLOutPutData.WriteLine "</head>" HTMLOutPutData.WriteLine "<body>" HTMLOutPutData.WriteLine "<h1 align=""" &"center" &""">まとめ</h1>" HTMLOutPutData.WriteLine "<hr>" for each file in objFolder.Files If file.name<> "ファイル一覧.html" and file.name<> WScript.ScriptName and Right(file.name,4)<> ".vbs" Then HTMLOutPutData.WriteLine "<font size=""" &"5" &"""><a href=""" & file.Path & """>"& file.name & "</a></font><br>" End if Next HTMLOutPutData.WriteLine "</body>" HTMLOutPutData.WriteLine "</html>" End Sub ------------------ http://lll.s21.xrea.com/m/link/37.html Javascriptは特にやっていなかったのと、 HTMLも不慣れなため、簡単なものしかかけませんでした。 フォルダ内の状況をそのまま HTMLとして出力する方法があれば、 教えて下さい。 よろしくお願い致します。 以上、よろしくお願い致します。

  • VBSでルートフォルダ名を取得したい

    (I)ドライブにUSBメモリーがあってルートフォルダ名がABCだとします。 VBSでルートフォルダ名を取得したくてコード書いてみたんですがMsgBoxには空欄しかでません。なにが間違っているのか教えて頂けないでしょうか? dim objFSO dim objDrive Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objDrive = objFSO.GetDrive("I") MsgBox objDrive.RootFolder.name

  • VBSを使用してXMLファイルの不要行を削除を行いたい

    お世話になります。 表題の件先に進まず困っておりお力を貸して頂けますでしょうか。 OSより出力されたXMLファイルに不要箇所があり、 その不要箇所をVBSを使用して削除し成形し直す事を行っております。 XMLファイルをVBSでテキストと読み取り不要箇所を検索し削除と思ったのですが、思うようにいきません。 該当箇所の先頭からの文字数を検索し、その前後を抜き出して 成形しなおそうとしたのですが、検索が出来ませんでした。 【検索VBS】 Const ForReading = 1 startxml = "<Parameters>" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("Test01.xml", ForReading) Wscript.Echo InStr(strCharacters,startxml) 【読み込みファイル】 添付します 【結果】 0 【不要箇所】 <Parameters>から</Parameters>までです。 よろしくお願いします。

  • vbsで最後の行を削除する

    csvファイル(test.csv)からフラグが1のものを抽出するのですが 最終行に改行がはってしまうので、最終行を削除してcsvファイルを保存したいのですが、 うまくいきません。ご教授ください。 Dim objADO Dim i Dim wsql Dim rs Dim wHeader Dim wData Dim objFSO Dim objFile Set objADO = CreateObject('ADODb.connection') objADO.Open "Driver={Microsoft Text Driver (*.txt;*csv)};"&_ "DBQ=C:\test;"&_ "ReadOnly=1" '抽出条件 wsql="select * from test.csv where フラグ='1'" Set rs =objADO.Execute(Wsql) 'ヘッダ部 wHeader='ID,商品名,商品番号,フラグ" 'データ部 wData="" Do While rs.EOF=False For i = 0 to rs.fields.count - 1 if i = (rs.fields.count -1) then wData = wData & chr(34) & rs.Fields.ltem(i) & chr(34) & chr(13) else wData = wData & chr(34) & rs.Fields.ltem(i) & chr(34) & "," end if next rs.MoveNext loop '最終改行削除? rs = Left(wData,Len(wData) - Len(chr(13))) 'ファイル出力 set objFSO = createObject("Scripting.FileSystemObject") set objFile = objFSO.OpentextFile("c:\test\test.csv",2, true) if err.Number = 0 then objFile.WriteLine(wHeader) objFile.WriteLine(wData) objFile.close end if set objFile = Nothing set objFSO = Nothing set objADO = Nothing ****************************************** ID,商品名,商品番号,フラグ 100,パソコン,100-12,1 200,ペン,200-11,1 ***ここの改行を削除する***** 〔EOF〕

  • VBS

    VBSであるファイルを1行ずつ読み込み、その読み込んだ値を ある別のファイルにリダイレクトしたいのですが、 どのように書けばよいか教えてください。 下記のように、echoでは出すことができるのですが、 ファイルにリダイレクトというのができません。 よろしくお願いします。 ==== sample shell ========================= Option Explicit On Error Resume Next Dim objFSO ' FileSystemObject Dim objFile ' ファイル読み込み用 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then Set objFile = objFSO.OpenTextFile("d:\dr1.txt") If Err.Number = 0 Then Do While objFile.AtEndOfStream <> True WScript.Echo objFile.ReadLine Loop objFile.Close Else WScript.Echo "ファイルオープンエラー: " & Err.Description End If Else WScript.Echo "エラー: " & Err.Description End If Set objFile = Nothing Set objFSO = Nothing ============================================================

  • VBSで、テキストファイルに対して、全体の途中に文字列を追加したい

    こんばんわ VBSについて質問です。 テキストファイルを開いて、文字列を追加するスクリプトを作成したいのですが、 以下のようなプログラムであれば、行の一番下に文字を追加できると思います。 ########ここから Dim objFS,objText,objFile Set objFS = CreateObject("Scripting.FileSystemObject") Set objFile = objFS.GetFile("C:\test\vbs\test.txt") Set objText = objFile.OpenAsTextStream(8,-2) objText.WriteLine("新しい行") Set objFILE = Nothing Set objText = Nothing ############ここまで しかし今やりたいのは分の途中に文字をいれたい。 たとえばテキストファイルが A B C D というファイルだったら、 "B"を検索して、Bの下に”新しい行”という文字列を追加したいです。 いろいろ調べましたがどうもうまくいきません。 わかる方ご教授願います。

  • 入力ボックス閉じた時間を出力する方法

    こんにちは。 下記に記載しましたスクリプトは、 VBSファイルを実行することにより入力ボックスが表示され、 入力ボックスに文字列を入力すると、 「Active.csv」というファイルに 『現在の時間』と『入力文字列』が出力されます。 このVBSスクリプト内に入力ボックスにて「OK」を 押したときの時間を拾っていれたいと思っております。 どのような手法が考えられますでしょうか? ご教授のほど、よろしくお願いします。 Option Explicit On Error Resume Next Dim objFSO ' FileSystemObject Dim objFile ' ファイル書き込み用 Dim Reason ' ファイル入力 Reason = InputBox("何かいれてください。") Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then Set objFile = objFSO.OpenTextFile("Active.csv", 8, True) If Err.Number = 0 Then objFile.Write(Date()) objFile.Write(",") objFile.Write(Time()) objFile.Write(",") objFile.Write(Reason) objFile.Write(",") 'ここに入力ボックスにて「OK」を押したときの時間を拾っていれたいです。 objFile.Write(",") objFile.Write(vbNewLine) objFile.Close Else WScript.Echo "ファイルオープンエラー: " & Err.Description End If Else WScript.Echo "エラー: " & Err.Description End If

  • VBS ファイルマージ処理

    特定のDir内、複数ファイルのレコードを全てマージする為、 以下の処理を考えておりますが実現に至っておりません。 Fileがなくなるまで、ループ処理をさせる為、File名 の(1)から(2)へFile名の受け渡し方法が解かりません。 何方か有識者の方、ご教授頂けませんでしょうか もっと賢くマージが出来るので有りますならば、その方法 を教えて頂けませんでしょうか ※Dir内にFileはユニークなFile名にて、複数個作られます。 ※マージに必要なFileだけがDirには作られます。 ※マージするFileの順番は問いません。 (1)C:\temp\temp Dir内のFile名を取得 Set objFso = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder("C:\temp\temp") objFile = objFso.GetAbsolutepathname("temp_ini.txt") Set objOut = objFso.OpenTextFile(objFile, 2, False) For Each objFile In objFolder.Files objFilemei = objFile.Name objOut.Writeline objFilemei next ※File名の受け渡しがわからず、一旦Fileに書き出してます (2)Fileが無くなるまで、File内のレコードを全て読込み、マージファイルを作成(予定) objFile1 = objFso.GetAbsolutepathname("temp_temp.txt") Set objin = objFso.OpenTextFile("temp_ini.txt",1) Do Until objin.atendofstream = True linedata = objin.readline() loop 説明が悪くてすみませんが、よろしくお願い致します。

専門家に質問してみよう