Вам необходимо выделить достаточно времени для запуска javascript и заполнения таблицы внутри iframe. Я использовал синхронизированный цикл для этого
Option Explicit
Public Sub GetInfo()
Dim ie As InternetExplorer, ws As Worksheet
Dim hTable As HTMLTable, t As Date
Const MAX_WAIT_SEC As Long = 10 '<==Adjust wait time
Set ws = ThisWorkbook.Worksheets("Sheet1")
Set ie = New InternetExplorer
With ie
.Visible = True
.Navigate2 "http://www.1line.williams.com/Transco/info-postings/notices/critical-notices.html"
While .Busy Or .readyState < 4: DoEvents: Wend
t = Timer
Do
On Error Resume Next
With .document.getElementById("theiframe").contentDocument.getElementById("j_idt11")
Set hTable = .getElementsByTagName("table")(1)
End With
On Error GoTo 0
If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While hTable Is Nothing
If Not hTable Is Nothing Then
WriteTable hTable, 1, ws
End If
.Quit
End With
End Sub
Public Sub WriteTable(ByVal hTable As HTMLTable, Optional ByVal startRow As Long = 1, Optional ByVal ws As Worksheet)
If ws Is Nothing Then Set ws = ActiveSheet
Dim tRow As Object, td As Object, r As Long, c As Long
r = startRow
With ws
Dim headers As Object, header As Object, columnCounter As Long
Set headers = hTable.getElementsByTagName("th")
For Each header In headers
columnCounter = columnCounter + 1
.Cells(r, columnCounter) = header.innerText
Next header
For Each tRow In hTable.getElementsByTagName("tr")
r = r + 1: c = 1
For Each td In tRow.getElementsByTagName("td")
If td.classname = "ui-col-7" Then 'or you could use if c = 7
.Cells(r, c).Value = "http://www.1line.williams.com" & Replace$(Split(Split(td.outerhtml, "href=" & Chr$(34))(1), ">")(0), Chr$(34), vbNullString)
Else
.Cells(r, c).Value = td.innerText
End If
c = c + 1
Next td
Next tRow
End With
End Sub