• 締切済み

VBScriptでHTMLを生成しJPG画像を表示させるには?

いつもありがとうございます。 早速質問ですが,職場での周知用に,vbsでHTMLを生成し, ファイルサーバにある画像(JPG)を取得して,HTMLに埋め込もうとしています。 具体的には以下のとおり表示させようとしていて,XP+IE6だとうまくいくのですが,Vista+IE7だと画像が表示されません。 (生成されたHTMLファイル自体は,画像が表示されます。  VBSで一連の流れにした場合のみ表示できないようです。) つたない文章で申し訳ございませんが,Vista+IE7で表示させるため,お知恵をいただけませんでしょうか。 画像を他部署で作成し,頻繁に更新するため,VBS自体はクライアントに置きっぱなしで,ファイルサーバの画像ファイルを差替えして運用したいと思っています。 --- sub Open_HTML(strImageFile) Dim objIE Dim objShell '初期設定(ウィンドウサイズ、表示位置に使用) WScript.Echo "html作成" & strImageFile 'IEオブジェクトを作成 Set objIE = CreateObject("InternetExplorer.Application") 'IEの画面を表示 objIE.Visible = True 'カラのページを表示 '(これを行わないと以降のdocument.writeなどがエラーになるため) objIE.Navigate "about:blank" 'HTMLを出力します objIE.Document.Write "<html>" & vbcrlf objIE.Document.Write "<head>" & vbcrlf objIE.Document.Write "<title>HTML画像挿入テスト</title>" & vbcrlf objIE.Document.Write "</head>" & vbcrlf objIE.Document.Write "<body>" & vbcrlf objIE.Document.Write "<table border=4 width=""100%"" height=""100%"">" & vbcrlf objIE.Document.Write "<tr>" & vbcrlf objIE.Document.Write "<td align=""center"" valign=""middle"">" & vbcrlf objIE.Document.Write "<IMG SRC=" & strImageFile & "> " & vbcrlf objIE.Document.Write "</td>" & vbcrlf objIE.Document.Write "</tr>" & vbcrlf objIE.Document.Write "</table>" & vbcrlf objIE.Document.Write "</body>" & vbcrlf objIE.Document.Write "</html>" & vbcrlf 'IEをアクティブに Set objShell = WScript.CreateObject("WScript.Shell") objShell.AppActivate("HTML画像挿入テスト - Microsoft Internet Explorer") objShell.AppActivate("HTML画像挿入テスト - Windows Internet Explorer") objIE.FullScreen = True '30秒表示 WScript.Sleep(30000) '画面のクリア objIE.Navigate "about:blank" 'IEの終了 objIE.Quit 'オブジェクトの破棄 Set objIE = Nothing Set objShell = Nothing end sub

みんなの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

IE7 はちょっと特殊みたいです。 参考URL:「7.11 IEオブジェクトを作る(IE7編)」 http://www.happy2-island.com/vbs/cafe02/capter00711.shtml IE7 環境がないので実際のところわかりませんが、参考 URL の 情報からすると、IE のバージョンによって分岐処理すれば良さ そうです。 試してもいないソースを提示してみる(´A `;) 下記は、WEB ページでインデントを表現するため、全角 SP を 使ってます。このまま、コピペすると VBS の場合はエラーと なりますので、エディタでタブや半角 SP 等適当に置換して下さい。 また、IE をユーザーの手で閉じられてしまうと VBS がエラーを 起こします。30秒待機、自動で閉じる処理は止めといた方が無難です。 ところで... XP + IE6 環境で、上手くいってるのですよね...?  # 私の環境では、なぜか画像が表示されないのです  # まあ、いいか。 あと、Html の問題として、Meta タグで charset ぐらいは設定 した方が良いでしょう。それから、  Document.Write  Document.Writeln の違いなども確認しておいて下さい。  # VBS って VAL 関数使えない...? 最後に逃げ口上ですが、再質問等いただいても私には確認する 環境がないので、その場合は識者の回答をお待ち下さい。 Sub Open_HTML(sImageFileName)      Dim IE, SH, Version      Set IE = CreateObject("InternetExplorer.Application")   Set SH = CreateObject("Shell.Application")   IE.Visible = True   With CreateObject("Scripting.FileSystemObject")     Version = Left(.GetFileVersion(IE.FullName),1)   End With   If Version = "7" Then     IE.Navigate2 "about:blank"     IE.Quit     Set IE = SH.Windows.Item(SH.Windows.Count - 1)   Else     IE.Navigate "about:blank"   End If      With IE.Document     .Writeln "<html>"     .Writeln "<head>"     .Writeln " <meta http-equiv='Content-Language' content='ja'>"     .Writeln " <meta http-equiv='Content-Type' content='text/html; charset=Shift_Jis'>"     .Writeln " <title>HTML画像挿入テスト</title>"     .Writeln "</head>"     .Writeln "<body>"     .Writeln "<table border=4 width='100%' height='100%'>"     .Writeln "<tr>"     .Writeln " <td align='center' valign='middle'>"     .Writeln "  <img src='file://" & sImageFileName & "'>"     .Writeln " </td>"     .Writeln "</tr>"     .Writeln "</table>"     .Writeln "</body>"     .Writeln "</html>"   End With   Set IE = Nothing   Set SH = Nothing End Sub

関連するQ&A

  • vbscript内にvbscriptを記述

    option explicit on error resume next dim objie, objwshell set objwshell = createobject("wscript.shell") objwshell.appactivate "microsoft internet explorer" set objie = createobject("internetexplorer.application") objie.width = 380 objie.height = 100 objie.navigate "about:blank" objie.document.write "<html><head><title>終了処理</title><script language='vbscript'>" & vbcrlf objie.document.write "option explicit" & vbcrlf objie.document.write "function osu()" & vbcrlf objie.document.write " dim aaa" & vbcrlf objie.document.write " Set aaa = CreateObject('Wscript.Shell')" & vbcrlf objie.document.write " aaa.run 'wscript ログオフ.vbs', 1, true" & vbcrlf objie.document.write " set aaa = nothing" & vbcrlf objie.document.write "end function" & vbcrlf objie.document.write "</script></head>" & vbcrlf objie.document.write "<body bgcolor='#CCCCCC' style='overflow:hidden'><form name='form1'>" & vbcrlf objie.document.write "<input type='button' name='button1' value='ログオフ' onClick='osu()'>" & vbcrlf objie.document.write "</form></body></html>" & vbcrlf objie.visible = true objie.toolbar = false objie.statusbar = false objie.resizable = false set objwshell = nothing set objie = nothing 上記のプログラムを[.vbs]という拡張子で保存。 これは、vbsファイルをクリックするとIEの画面が出て、ログオフのボタンをクリックするとログオフするというものなのですが、うまくいきません。 vbsの中にまたvbsを記述しているからでしょうか?

  • インターネットで調べてVBSで下のようなものを作ってみました。

    インターネットで調べてVBSで下のようなものを作ってみました。 やりたいことは、IEを起動して複数のサイトを複数のタブで表示 したいのですが、サイトの種類分IEも起動してしまいます。 考えているようなことはできないのでしょうか。 ========ここから下です======== Option Explicit Dim objIE Dim objShell 'Shell.Application Set objShell = CreateObject("Shell.Application") Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEウィンドウを表示 objIE.Navigate2 "http://www.okwave.jp/" Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEウィンドウを表示 objIE.Navigate2 "http://www.google.co.jp/" Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEウィンドウを表示 objIE.Navigate2 "http://www.yahoo.co.jp/" ======================= よろしくお願いいたします。

  • VBScriptで、既に開いているIEを画面の最前面に表示させる

    VBScriptで、既に開いているIEを画面の最前面に表示させる OS:WindowsXP SP3 ブラウザ:InternetExplorer6 期待している機能としましては、IEが開いていない場合は新規にIEを立ち上げ、既に開いている場合は、それを画面の最前面に表示させる(最小化されている場合はそれを解除する)といった感じです。 教えて頂きたいのは、IEを画面の最前面に表示させる方法(最小化の場合はそれを解除)です。 現状のソースを記載します。おかしな点がありましたらご指摘よろしくお願い致します。 Dim objShell Dim objWindow Dim objIE Dim ieFlag ieFlag = False '開いているウィンドウからIEを検索 Set objShell = CreateObject("Shell.Application") For Each objWindow In objShell.Windows If TypeName(objWindow.Document) = "HTMLDocument" Then ieFlag = True Set objIE = objWindow Exit For End If Next 'IEが開いていたらそれを画面の最前面に、そうでないなら新規で開く If ieFlag = True Then 'IEを画面の最前面に又は、最小化解除 Else '新規にIEを開く Set WshShell=Wscript.CreateObject("Wscript.Shell") WshShell.Run("http://www.google.co.jp/") WScript.Sleep(4000) End If

  • VBScriptでオートパイロットプログラムを作ったのですが

    環境は、VB 6.0 SP5 です。 以下のようにVBでプログラミングしたんですが(VBScript含む)、続けて違うIDでログインしようとすると、該当ページが前のIDでログインしたままになっていて、動作が不安定です。普通にIEを立ち上げるてログインした場合、2回目に立ち上げた状態は、ログイン前のまっさらなページが表示されますよね。 何が問題なのでしょう? ご教授願えないでしょうか。   Dim WshShell As Object   Dim objIe As Object   Set WshShell = CreateObject("WScript.Shell")   Set objIe = CreateObject ("InternetExplorer.Application")   objIe.Navigate("該当ページのURL")   objIe.Visible = True   WshShell.AppActivate (objIe)   ログイン処理・・・   同じ事を繰り返す・・・

  • vbscriptでhtmlのソース保存

    vbscriptにてIEを操作し、指定URLのhtmlソースコードをファイルに保存するスクリプトを作成しています。 ですが、サイトによっては取得に失敗するケースがあり、原因が分かりません。 下記の例では、yahooのトップページは取得できますが、amazonのトップページは 取得できませんでした。 申し訳ありませんが、原因と解決策を教えていただきたいです。 よろしくお願いいたします。 尚、環境はWinXP(SP3) 、IEはver8を使用しています。 '--------------------------------------------' Option Explicit Dim objIE Dim strBody Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.amazon.com/" 'objIE.Navigate "http://www.yahoo.co.jp/" Do Until objIE.Busy = False WScript.sleep(250) Loop' strBody = objIE.Document.Body.InnerHtml msgbox strBody Dim fso, tf Set fso = CreateObject("Scripting.FileSystemObject") Set tf = fso.CreateTextFile("test.txt", True) tf.Write strBody tf.Close Set objIE = Nothing '--------------------------------------------'

  • VBscriptからIE11起動

    windows7(x64) IE11 IEを起動するスクリプトを.vbs作成しました。 vbsファイルをダブルクリックすると、↓エラーが発生するときがあります。 「 WScript.CreateObject: "InternetExplorer.Application" というオブジェクトを作成 できませんでした。」 ↓SRCです。 Dim IE Set IE = WScript.CreateObject("InternetExplorer.Application", "Event_") IE.Visible = True IE.Navigate ("http://www.yahoo.co.jp") set IE = nothing 数秒待ったり、vbsを連打すると起動します。 プロパティ(vbs右クリック)のスクリプトタブで実行時間を10秒にしてみても起動できないことがあります。 オブジェクトを作成しない方法はありますか? また、失敗している原因はなんでしょう?

  • vbsでホームページ表示について

    vbsファイル ・Dim objIE ・Set objIE = CreateObject("InternetExplorer.Application") ・objIE.Visible = True ・objIE.Navigate2 "http://***.***1/" ・objIE.Navigate2 "http://***.***2/", &H1000 ・objIE.Navigate2 "http://***.***3/", &H1000 ・Set objIE = Nothing この中で「, &H1000」を a=", &H1000" objIE.Navigate2 "http://***.***3/" & a とすると正常に表示できません。 変数??に代入するにはどうすればいいのでしょうか。 アドバイス、よろしくお願いします。

  • FIREFOXでWebページを表示できるVBS

    VBS超初心者です。 10年くらい前に作られたVBSを修正したいのですが、さっぱりわからないため助けてください。 勤務先で、社内イントラのデータベースを参照するときに使っているVBSです。 【いまの挙動】 VBSを起動すると文書番号の入力画面が表示→入力してEnter→IEで該当ページ(http:★★★/文書番号)が表示されます。 【やりたいこと】 FIREFOXで表示したい。(先日のIE脆弱性の騒ぎの影響で、上から指示があり。。) 今は以下のようなソースで使ってます。 ---------------------- Sid = InputBox("ID を入力。") Sid = Trim(Sid) If Sid = "" Then WScript.Quit If Len(Sid) <>14 Then WScript.echo "ID が不正。" WScript.Quit End If Set objie = WScript.CreateObject("internetexplorer.Application") objie.navigate2 "http://★★★/" & Sid objie.Visible = True WScript.Quit ---------------------- 「internetexplorer.Application」ではダメなことはわかるのですが それ以上は私の知識ではお手上げでした。。 どなたか詳しいかた、アドバイスお願いします。

  • VBScriptによるHTML生成及び背景画像

    お世話になります。 当方あと一歩のところでつまづいています。 下記の点についてご存知の方おられましたらぜひ教えてください。 VBScriptにてHTMLページを生成しています。 その際に背景に画像を設定したいのですが、 どのページを探しても出てきません。 ちなみにInternetExplorerをCreateObjectしたオブジェクト(ie)で ie.style.backgroundImageやie.backgroundでxxx.jpgを設定しても 以下のようなエラーで設定できません。 エラー: オブジェクトでサポートされていないプロパティまたはメソッドです。 ソースの一部です。 ie.Width = 800 ie.Height = 500 ie.Top = 200 ie.Left = 300 ie.ToolBar = false ie.StatusBar = false ie.Resizable = true ie.background = "DSC_0010.jpg" ←例えばこのような ie.Document.Body.InnerHTML = html ie.Document.Title = "Atlas Batch Schedular" objWSH.AppActivate("about:blank") ここさえできれば完成です。 HTMLを文字列で定義したものをinnerHtmlで生成していますが、 こちらでbackgroundなどを設定しても生成された際に全く反映されませんので、 上記の方法しかないと思いました。 どうぞ宜しくお願い致します。

  • DoEvents

    VBSでDoEventsは使えないのでしょうか? *************************** Dim ObjIE dim i Set ObjIE = CreateObject("InternetExplorer.Application") ObjIE.Navigate "http://oshiete.goo.ne.jp/" ObjIE.Visible = True Do While ObjIE.Busy = True DoEvents Loop Do While ObjIE.Document.ReadyState <> "complete" DoEvents Loop Set ObjIE = Nothing *************************** だと、エラーになりました。 Wscript.sleep 3000 ならエラーにならずにコードは動きました。 VBAならDoEventsは使えるのに VBSで使えない理由を教えてください。