
VB.NET(VB 2010 Express)でIE9をWebBrowserコントロールではなく直接制御するアプリを作成しています。
そこで、次のURLのVBAによるHTMLソースのフレーム処理を参考にさせて頂いています。
http://vbaie.blog111.fc2.com/blog-entry-20.html
そこから引用しVB.NET用にリライトした下記関数内でエラーとなっています。
'フレームのDocumentを取得する関数
Public Function IEFrameDocument(objIE As Object, url As String) As HtmlDocument
Dim objFrames As mshtml.FramesCollection
Dim frameDoc As HtmlDocument
Dim i As Integer
objFrames = objIE.document.frames
For i = 0 To objFrames.Length - 1
frameDoc = objFrames.item(i).document 'エラー発生の行
If InStr(frameDoc.Url.ToString, url) Then
Exit For
End If
Next
IEFrameDocument = frameDoc
End Function
コメントで表示しているエラー行のエラー内容は、次のとおりです。
<InvalidCastExceptionはハンドルされませんでした。>
型 'mshtml.HTMLDocumentClass' の COM オブジェクトをクラス型'System.Windows.Forms.HtmlDocument' にキャストできません。
COM コンポーネントを表す型のインターフェイスを COM コンポーネントを表さない型にキャストすることはできません。
ただし、基になる COM コンポーネントがインターフェイスの IID の QueryInterface 呼び出しをサポートする場合は、インターフェイスにキャストすることができます。
解決方法を教えて頂きたくよろしくお願い致します。
No.1ベストアンサー
- 回答日時:
> IE9をWebBrowserコントロールではなく直接制御する
であれば、System.Windows.Formsは使えません。
mshtmlのクラス/インターフェースを使いましょう。
というか、サンプル通りに mshtml.IHTMLDocument を使えばよいのでは?
教えて頂いたとおり、mshtml.IHTMLDocument でエラーが解消できました。
去年から手掛けている自分で使うアプリに取り組んでいますが、いくつもの壁にぶち当たり遅々として完成に至っていません。Windowsと.NET、またそれらの関係等の基礎・基本ができていないためのようですが。そちらの知識をつける勉強から始めた方が早いようです。
早速回答頂きありがとうございました。大変助かりました。また一歩完成に近づきました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでfunctionを利用しようとし...
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
インポート時のエラー「データ...
-
ApplicationとWorksheetFunctio...
-
ACCESSで値を代入できないとは?
-
エクセル マクロ VBAでスケジュ...
-
String""から型'Double'への変...
-
VBA エクセル で FIND でのエラ...
-
【VBA】ワークブックを開く時に...
-
Filter関数を用いた結果、何も...
-
マクロで"#N/A"のエラー行を削...
-
Null 値の使い方が不正です と...
-
実行時エラー93 パターン文字...
-
オブジェクト型の変数にフォー...
-
Findプロパティを取得できません
-
mailstorehomeのエクスポートで...
-
UWSCでエラー発生時の対処法に...
-
ACCESS DAO で不要なテーブルの...
-
変数にするとエラーになる理由は?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
マクロで"#N/A"のエラー行を削...
-
文字列内で括弧を使うには
-
String""から型'Double'への変...
-
【Access】Excelインポート時に...
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
インポート時のエラー「データ...
-
ACCESSで値を代入できないとは?
-
VBA エクセル で FIND でのエラ...
-
Filter関数を用いた結果、何も...
-
レコード登録時に「演算子があ...
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
【VBAエラー】Nextに対するFor...
-
実行時エラー 438 の解決策をお...
-
「実行時エラー '3167' レコー...
おすすめ情報