dポイントプレゼントキャンペーン実施中!

いつもありがとうございます。
早速質問ですが,職場での周知用に,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

A 回答 (1件)

IE7 はちょっと特殊みたいです。



参考URL:「7.11 IEオブジェクトを作る(IE7編)」
http://www.happy2-island.com/vbs/cafe02/capter00 …

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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!