遅延バインディングを回避する方法を教えてください

解決


teraera  2007-02-05 16:39:32  No: 97884

ObjIE.Document.Focusが遅延バインディングになる為、下記のようにStrict Offの専用Libを作って運用していますが不便です。遅延バインディングにならないコーディングを教えてください。
  Option Strict Off
  Module libOff
    Sub ObjIEDocumentFocus(ByVal ObjIE As SHDocVw.InternetExplorer)
        ObjIE.Document.Focus()
    End Sub
  End Module


K.J.K.  2007-02-05 17:44:31  No: 97885

例外処理やCOMオブジェクトの参照カウントのチェックなどを抜きにすれば、

Dim ObjDocument As mshtml.HTMLDocument
ObjDocument = ObjIE.Document
ObjDocument.focus()

とでもすればいいのでは。


teraera  2007-02-06 07:08:01  No: 97886

K.J.K.さん、有難うございます。ご指摘のように修正してうまくいきましたが、フレームの場合はどうしてもうまくいきません。下記のコードでエラーになります。(MSHTML.FramesCollectionに既定のプロパティがない旨のコンパイルエラー)。ついでで申し訳ありませんが教えてください。

 Dim ObjDocument As MSHTML.HTMLDocument
 ObjDocument = CType(ObjIE.Document, MSHTML.HTMLDocument)
 ObjDocument.frames(0).Frames(0).Document.Links.Item(4).click()


K.J.K.  2007-02-06 09:55:57  No: 97887

応用を利かせてください。
framesやframeなどを受けるための変数も用意して、そこで
受ければいいのでは。
# ついでに言うと、最初に提示した条件とは異なってきていますよね。


teraera  2007-02-10 13:54:21  No: 97888

K.J.K.さん、あなたのアドバイスで最後に残っていたフレーム関係のStrictOffのLibを一挙に解決しました。本当に有難うございます。今後ともご指導の程お願いいたします。


※作成する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。







   このエントリーをはてなブックマークに追加