[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『WebBrowserコントロールでの画像表示・非表示切替え』(田吾作)
こんにちは、よろしくお願いいたします。
エクセルは2002、ウィンドウズは来年サポートが切れるXP(SP3)です。
未だにダイヤルアップ回線のため、IEで画像を表示すると通信が遅くなるため通常はIEで画像を表示しない ようにしています。 時々画像を表示したいときがあるため下記のコードでIEの画像表示・非表示を切替えています。 単に画像表示を切替えただけではIEでF5キーを押しても表示・非表示の切替が反映されないので、一旦IEを 閉じてから再度IEを起動しURLを表示しなおすようにしています。 このコードはうまく作動しています。
今回の質問は、これをWebBrowserコントロールにも適用できないか、ということです。 下記の '画像表示切替部分(開始) '画像表示切替部分(終了) の間のみのコードで画像表示切替を行ってもWebBrowserコントロール上でF5キーを押しても画像表示・非表示 切替えがされずに以前の状態のままで再表示してしまいます。
IEなら一度IEを閉じて再度IEを起動しなおすことで画像表示・非表示の切替えが反映されますが、WebBrowser コントロールでの反映のさせかたが分かりません。 ご存知の方、ご教示お願いいたします。
Sub test() Const navOpenInNewTab As Integer = &H800 Const myreg As String = "HKCU\Software\Microsoft\Internet Explorer\Main\Display Inline Images" Dim a As Variant Dim W As Object Dim myurl As String Dim myIE As Object Dim MyShell As Object Dim MyWindow As Object Dim urlary() As Variant Dim urlcnt As Integer Dim i As Integer urlcnt = -1 Set MyShell = CreateObject("Shell.Application") 'IEで表示されているURLを取得 For Each MyWindow In MyShell.Windows If UCase(Right(MyWindow.FullName, 12)) = "IEXPLORE.EXE" Then myurl = MyWindow.locationurl urlcnt = urlcnt + 1 ReDim Preserve urlary(urlcnt) urlary(urlcnt) = myurl 'ウィンドウを閉じる MyWindow.Quit End If Next Set MyShell = Nothing '画像表示切替部分(開始) Set W = CreateObject("WScript.Shell") '画像表示状態を取得 a = W.RegRead(myreg) '画像表示状態を切替え If a = "yes" Then a = "no" Else a = "yes" End If W.RegWrite myreg, a '画像表示切替部分(終了) If urlcnt <> -1 Then 'IEインスタンスを生成 Set myIE = CreateObject("InternetExplorer.Application") With myIE .Visible = True 'IEウィンドウを表示 For i = 0 To urlcnt 'URL表示 If i = 0 Then .Navigate urlary(i) Else .Navigate2 urlary(i), navOpenInNewTab End If While .Busy Or .ReadyState <> 4 Wend Next i End With Set myIE = Nothing End If End Sub
追記です。
現状のWebBrowserコントロールのコードは下記のとおりです。
'リストボックスに格納されたURLをWebBrowserコントロール表示 Private Sub CommandButton1_Click() If Me.ListBox1.ListCount = 0 Or Me.ListBox1.ListIndex = -1 Then Exit Sub With Me.WebBrowser1 .Navigate "about:blank" Do While .Busy Or .ReadyState <> 4 DoEvents Loop .Navigate Me.ListBox1.List(Me.ListBox1.ListIndex, 1) Do While .Busy Or .ReadyState <> 4 DoEvents Loop End With End Sub
'画像の表示・非表示切替え Private Sub CommandButton2_Click() Const myreg As String = "HKCU\Software\Microsoft\Internet Explorer\Main\Display Inline Images" Dim a As Variant Dim W As Object Set W = CreateObject("WScript.Shell") '画像表示状態を取得 a = W.RegRead(myreg) '画像表示状態を切替え If a = "yes" Then a = "no" Else a = "yes" End If W.RegWrite myreg, a End Sub
(田吾作)
ユーザーフォーム自体を一旦Unloadし、再Loadすることでうまく行きました。 IEと同じことでした。お騒がせしました。
標準モジュールに記述しておき、ユーザーフォームから呼び出して使っています。
Function uf1saihyouji() Dim mylst As Variant Dim myurl As String Dim flg As Boolean Const myreg As String = "HKCU\Software\Microsoft\Internet Explorer\Main\Display Inline Images" Dim a As Variant Dim W As Object UserForm1.CommandButton6.Enabled = False flg = False With UserForm1.ListBox1 If .ListCount <> 0 Then flg = True mylst = .List myindx = .ListIndex End If End With myurl = UserForm1.WebBrowser1.LocationURL Unload UserForm1
'画像表示切替部分(開始) Set W = CreateObject("WScript.Shell") '画像表示状態を取得 a = W.RegRead(myreg) '画像表示状態を切替え If a = "yes" Then a = "no" Else a = "yes" End If W.RegWrite myreg, a '画像表示切替部分(終了)
UserForm1.Show 0 If flg = True Then With UserForm1.ListBox1 .List = mylst .ListIndex = myindx End With End If With UserForm1.WebBrowser1 .Navigate myurl Do While .Busy Or .ReadyState <> 4 DoEvents Loop End With UserForm1.CommandButton6.Enabled = True End Function
(田吾作)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.