2017-03-10 5 views
0

私はExcel VBAを使用して、ウェブページ全体(ニュース記事)を1つのセルに集めようとしています。問題は、Excelがウェブサイトを出力するときに、ソーステキストの新しい行がすべて新しい行に配置されることです。私はそれを1つのセルに出力する方法を知りたいです。VBAを使用してExcelでWebページのテキストを単一のセルにコピーしますか?

私は多くの方法を試しましたが、私のバージョンのExcelには特定のライブラリが付属していないため、機能しません。 (私のコンピュータサイエンスに関する知識は限られています。)私は2015年のバージョンのExcelをOS X上で使用しています。このプロジェクト全体の最終目標は、Excelがウェブサイトの全リスト(URLの列)を1つの用語(現在はM5に格納されている)で検索し、YESまたはNOを出力します。今のところ、私はE12に格納された単一のURLで試しています。

Sub SearchSite() 
strsearch = Range("M5") 
theurl = Range("E12") 

With ActiveSheet.QueryTables.Add(Connection:="URL;" & theurl, Destination:=Range("P1")) 
.Name = "NewsQuery" 
.AdjustColumnWidth = False 
.TablesOnlyFromHTML = False 
.Refresh BackgroundQuery:=True 
End With 

Debug.Print "DONE" 

End Sub 
+0

あなたはなぜそれをすべて1つのセルに入れたいのか不思議です - それであなたは 'M5'で単語を検索できますか?あなたがデータを使って何かをしようとしている場合は、すべてを単一のセルに入れておくと、行を分割するのではなく、少し複雑になるからです。おそらく、あなたは別の列にすべてのWebサイトを置くことができますか?または別のシート?単一のセルが必要な場合は、すべての行だけを取るサブルーチンを追加し、その文字列を最初のセルに追加するのはなぜですか? – BruceWayne

+0

私は、すべてのテキストを別々の行に入れて仕事を終えることができたことに気付き始めました。このプロセスを多くのWebサイトで繰り返さなければならないとすれば、管理が難しいと思っていましたが、そうでないかもしれません。 –

+0

多くの行の問題の一部は、各サイトのテキストが予測できない行数を埋めるため、任意の数の行からExcel検索を実行する必要があるということです。ああ、Rows.Countは答えを保持するかもしれません... –

答えて

0

私が言及したように、すべてを別々の行に保存する方がよいでしょう。しかし、一つだけのセルにあるようにそれらを必要とするならば、あなたがそうする第2のサブを使用することができます。

Sub combineCellsIntoOne(dest As Range) 
Dim lastRow As Long 
lastRow = Cells(Rows.Count, dest.Column).End(xlUp).Row 

Dim i As Long 
For i = dest.Row + 1 To lastRow 
    dest.Value = dest.Value & " " & Cells(i, dest.Column).Value 
    Cells(i, dest.Column).ClearContents 
Next i 

End Sub 

あなたは、元の1でEnd WithcombineCellsIntoOne Range("P1")を置くことができます。それはうまくいくはずです(必要に応じて宛先範囲を変更することに注意してください)。

0

ここで私は何をしたのですか。 URLは列Eに格納されます。

Public strsearch As String 

Sub SearchSite() 
    For j = Selection.Row To Selection.Row + Selection.Rows.count - 1 

' Get the URL 
     theurl = Range("E" & j) 
     If theurl = "" Then GoTo NextRow 

' Fill the Query Table 
     With ActiveSheet.QueryTables.Add(Connection:="URL;" & theurl, Destination:=Range("P1")) 
     .Name = "NewsQuery" 
     .AdjustColumnWidth = False 
     .RefreshStyle = xlOverwriteCells 
     .TablesOnlyFromHTML = False 
     .Refresh BackgroundQuery:=False 
     .SaveData = False 
    End With 


' Search the Query Table for the Search Term 
    strsearch = Range("M5") 
    bottomrow = Range("P" & Rows.count).End(xlUp).Row 

    For i = 1 To bottomrow 
     If InStr(Range("P" & i), strsearch) <> 0 Then 
      Range("K" & j) = "YES" 
      Exit For 
     End If 
     Range("K" & j) = "NO" 
    Next i 

    NextRow: 
Next j 

End Sub 
0

これは、必要な操作を行う必要があります。

'Import Everything From a Web Page: 

Sub Test() 
    Dim IE As Object 

    Set IE = CreateObject("InternetExplorer.Application") 
    With IE 
     .Visible = True 
     .Navigate "http://finance.yahoo.com" ' should work for any URL 
     Do Until .ReadyState = 4: DoEvents: Loop 

      Range("A1").Value = .document.body.innertext 

      .Quit 
     End With 

End Sub 
関連する問題