>最後にお願いしたいのですが、私の参照設定を見ていただいて、
>KENさんと何か違うところがあるか見ていただきたいのですが
>お願い出来ますでしょうか?
>(私の参照設定が足りないことを祈りつつ…)
>
>Visual Basic For Applications
>Microsoft Access 12.0 Object Library
>Microsoft Excel 12.0 Object Library
>Microsoft ActiveX Data Objects 2.1 Library
>OLE Automation
>Microsoft Internet Contorols
>Microsoft Forms 2.0 Object Library
>Microsoft Office 12.0 Access database engine Object Library
>Microsoft Visual Basic for Application Extensibility 5.3
>Microsoft HTML Object Library
>Microsoft Office 12.0 Object Library
>Microsoft Scripting Runtime
>Microsoft ADO Ext.2.8 for DDL and Security
>
>そして、KENさんのテストしたHPでも動かして見ましたが、
>やはりエラーになりました。
>エラー内容
>「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」
結論から先に書くと、私のサンプルが間違ってました。※As Objectだと動かないみたいです
※ここから下、原因がわかるまで 長い道のりでした(恥ずかしいけど、そのまま載せておきます。失敗をみなさんの肥やしにしてください・・・)
IEのオプション ゾーン・セキュリティを確認してみては?
インラインフレーム関係にアクセスするとエラーが発生する件ですが、
なんでしょうね。(ぉぃぉぃ)
あとは、セキュリティのレベルくらい?
私のテストは 中高 の デフォルトだと思いますが、
もしかして、ゆるい部分があったのかなぁ。
IEのオプションで、フレーム間のデータやりとりなどのオプションがあるので、確認してみてください。
IE9 インターネットの設定 オプションの確認 - YouTube
www.youtube.com
↑ヘッドセットの調子が悪くて いつもの 熱弁(笑)が入っていませんが・・・
あとは、参照設定の順番で .src が 違う型を指している ってことも無いだろうし
(それは、 ADOとDAOの話で、 As ADODB.Recordset とか.Recordsetがかぶった時の話だし、
.srcは順番ありそうだけど、.ie8_srcは頭ie8_srcで同じプロパティは無い感じですし)
逆に、一度、参照設定を少なくしてみるとか?
(でも、繰り返すけど .ie8_src は ほかに無いと思うし..)
あとは、.vbs用に少し改造した 下記を走らせてみてください。
test0121.vbs
'IEのオブジェクトを作成する Set objIE = CreateObject("InternetExplorer.application") objIE.Top = 250 objIE.Left = 250 objIE.Width = 800 objIE.Height = 400 objIE.Visible = True 'ページを開く(.Navigateで表示する。) objIE.Navigate "http://dec2011.top1-12.info/test0120.html" '読み込み完了となるまで、ループする。 While objIE.ReadyState <> 4 Or objIE.Busy 'READYSTATE_COMPLETE = 4 WScript.Sleep 100 '0.1秒待つ 1000で1秒 Wend WScript.Sleep 3000 '3秒 念のため待つ 1000で1秒 'iframeのタグを集める .getElementsByTagName("iframe")を使用 Dim objIFRAME Set objIFRAME = objIE.document.getElementsByTagName("iframe") Dim oHTMLIFrame 'VBSはできないけど HTMLIFrameと参照設定後 型宣言すると便利 Dim n For n = 0 To objIFRAME.Length - 1 '配列が0からなので-1 Set oHTMLIFrame = objIFRAME(n) 'n番目を代入 Msgbox ".src= " & oHTMLIFrame.src '相対パスや絶対パス、ソースの文字列 Msgbox ".ie8_src= " & oHTMLIFrame.ie8_src 'ここに入っているのがiFrameのURL? Next 'IEを閉じたり、後始末 'objIE.Quit 'デバックなのでコメントアウト IEを閉じたり、後始末をする
実行結果を見てびっくり
.vbsにして、(vbsだと変数の型が指定できないので)
テストしてみると、実行時エラーが .ie8_src の 部分で発生しました。
VBA IE操作 参照設定後 As HTMLIFrameを使ってください - YouTube
www.youtube.com
あっ、Dim oHTMLIFrame As HTMLIFrame みたいに、型を宣言しないと、
.ie8_src の プロパティが見れないみたいです。
正しいVBAは、※参照設定して Dim oHTMLIFrame As HTMLIFrame を 使ってください。
VBA As HTMLIFrameに変えたソース
Sub ietest_0120_2() 'STOPで止めて、インラインフレームを探る Dim objIE As Object 'IEのオブジェクトを作成する Set objIE = CreateObject("InternetExplorer.application") objIE.Top = 250 objIE.Left = 250 objIE.Width = 800 objIE.Height = 400 objIE.Visible = True 'ページを開く(.Navigateで表示する。) objIE.Navigate "http://dec2011.top1-12.info/test0120.html" '読み込み完了となるまで、ループする。 While objIE.ReadyState <> 4 Or objIE.Busy 'READYSTATE_COMPLETE = 4 DoEvents Wend 'iframeのタグを集める .getElementsByTagName("iframe")を使用 Dim objIFRAME As Object Set objIFRAME = objIE.document.getElementsByTagName("iframe") Debug.Print TypeName(objIFRAME(0)) 'オブジェクトのタイプを確認。 Dim oHTMLIFrame As HTMLIFrame '本当はAs HTMLIFrameと参照設定後 型宣言すると便利 Dim n As Integer For n = 0 To objIFRAME.Length - 1 '配列が0からなので-1 Set oHTMLIFrame = objIFRAME(n) 'n番目を代入 'Stop '止めてデバッグモード、ウォッチ式で変数を見ると便利ですよ Debug.Print n Debug.Print ".src " & oHTMLIFrame.src '相対パスや絶対パス、ソースの文字列 Debug.Print ".ie8_src " & oHTMLIFrame.ie8_src 'ここに入っているのがiFrameのURL? Debug.Print ".document.URL " & oHTMLIFrame.document.URL '親のURLだった Debug.Print ".document.domain " & oHTMLIFrame.document.domain '親のドメインだった Next n 'IEを閉じたり、後始末 'objIE.Quit 'デバックなのでコメントアウト IEを閉じたり、後始末をする End Sub
終わりのあいさつ
参照設定や順番? IEオプション じゃなくて、
回り道をしたけど、 As HTMLIFrame の変数なら .ie8_src を見ることができると思います。
※私の最後に書いたサンプルが As Object で 迷惑をかけただけでした反省・・・