列 A に URL のリストを含むスプレッドシートがあります。各 URL を読み取り、出力を 1 つのセル、または少なくとも URL と同じ行に格納したいと考えています。私は現在、次の標準 VBA コードを使用して各読み取りを行っています (ここでは静的 URL を使用するように簡略化しています)。
問題は、Web ページの形式に応じて、Excel が自動的にデータを複数の行と複数の列に分割することです (これは明らかに通常必要とされるものです)。
そのコードを変更して出力を単一のセルまたは行に強制する簡単な方法はありますか?
Sub FetchData()
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.someurl", Destination:=Range("$B$1"))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub
心配しないでください、私はここのコードを使用してそれを理解することができました: 特定のテーブルのみを Web サイトから Excel に取得する
以下の私のバージョンでは、列 A に URL のリストが含まれ、列 BI に他のデータが含まれていると想定しています。列 A から各 URL の Web ページを読み取り、テーブルから 2 つのフィールドを取り出して列 J と K (列 10 と 11) に配置します。フィールドは、Web ページで ID="Name1" および ID="Name2" と名付けられています。
Sub Getfromweb()
Dim RowNumb As Long
Dim LastRow As Long
Dim htm As Object
Set htm = CreateObject("htmlFile")
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For RowNumb = 1 To LastRow
With CreateObject("msxml2.xmlhttp")
.Open "GET", Sheets(1).Cells(RowNumb, 1), False
.send
htm.body.innerhtml = .responsetext
End With
With htm.getelementbyid("Name1")
Sheets(1).Cells(RowNumb, 10).Value = .innertext
End With
With htm.getelementbyid("Name2")
Sheets(1).Cells(RowNumb, 11).Value = .innertext
End With
Next RowNumb
End Sub