2

列 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
4

1 に答える 1

0

どうやらそれは Text to Columns に関連しています。それが以前に使用されていて、区切り記号として空白が指定されていた場合、それは将来のデータ インポートに適用されます。変。とにかく、Text to Columns に入り、空白の区切り記号を削除して受け入れてから、データのインポートをやり直してください。

于 2014-04-11T22:10:04.347 に答える