フレーム内部へのアクセス 

フレームの例画面を起動
'サンプル4.1.1_フレーム内部へのアクセス
Public Sub getFrame()
    Dim ie As InternetExplorer
    Set ie = getIE("フレームの例")    'IE取得
    'いつもどおりHTMLへアクセス
    MsgBox ie.document.body.innerHTML
    'フレーム1の中身へアクセス
    MsgBox ie.document.frames("frame1").document.body.innerHTML
    'フレーム2の枠へのアクセス
    MsgBox ie.document.frames("frame2").document.body.innerHTML
    'フレーム2の中身1へのアクセス
    MsgBox ie.document.frames("frame2").document.frames("frame2_1").document.body.innerHTML
End Sub

'ドキュメントタイトル/URLを指定してIEを取得
Public Function getIE(arg_title As String, Optional arg_url As String) As Object
    Dim ie As Object    'IEを格納する変数(オブジェクト型)
    Dim sh As Object    '起動中のShellWindow一式を格納する変数
    Dim win As Object   'ShellWindowを格納する変数
    Dim document_title As String    'ドキュメントタイトルの一時格納変数
    Set sh = CreateObject("Shell.Application")  'ShellWindowをwinsに格納
    'ShellWindowから1つづつ取得して処理
    For Each win In sh.windows
        'ドキュメントタイトル取得失敗を無視(処理継続)
        On Error Resume Next
        document_title = ""
        document_title = win.document.Title
        On Error GoTo 0
        'タイトルバーに引数が含まれるかチェック
        If InStr(document_title, arg_title) > 0 Then
            Set ie = win  '変数ieに取得したwinを格納
            Exit For      'ループを抜ける
        End If
    Next
    Set getIE = ie  '値の返却
End Function
フレーム内部のHTML文書にアクセスする場合、フレームを指定して、そこからDocumentメソッドによりアクセスする。対象フレームは、FRAMEタグのName属性で指定することができる。
MsgBox ie.document.frames("frame1").document.body.innerHTML
MsgBox ie.document.frames("frame2").document.body.innerHTML
フレームが入れ子(フレームの中にフレーム)になっている場合は、単純に先の手順で取得したHTML文書に対してさらにフレームを指定...ということを繰り返すだけよ。
MsgBox ie.document.frames("frame2").document.frames("frame2_1").document.body.innerHTML