| 
    
     |  | ▼ぶどう さん: おはようございます。
 
 
 >あとは、この処理を1000回繰り返すとして高速化のために、
 >
 >1. WEBの画像を表示しないで文字のみ取り込みできるか。又は画像が表示されるのを完全に待つことなく取り込み始めることができるか。
 
 IE自体は非表示でも可能ですが、時間的な差はありませんでしたよ!!
 但し、読み込みは全ての表示が完了しないと駄目ですよ!!
 
 >2. 1セル毎の記入式の取り込みではなく、WEBの文字部分全体(特定の表だけでなくてよいので)一括取り込みできるか。
 
 テキストデータの一括での取得は可能です。
 
 例
 
 ie.document.body.innertext
 
 等とすると表示されているテキストを一括で取得できますが、
 それぞれの内容に分割しなければなりません
 (いや、分割できれば良いですが、区切り文字がなくてできない場合もあります)。
 
 よって、表の要素を一つずつ取得する方法しか思い浮かびませんでした。
 但し、以下のコードで私の環境ではWebクエリと大きい時間差はありませんでしたよ!!
 
 
 '======================================
 Sub main2()
 On Error Resume Next
 Dim ret As Long
 Dim ie As Object
 Dim tbl As Object
 Dim rw As Object
 Dim cll As Object
 Dim idx As Long
 Dim g0 As Long, g1 As Long
 Dim wk1, wk2
 Application.ScreenUpdating = False
 Set ie = CreateObject("InternetExplorer.Application")
 With ie
 .Visible = False
 idx = 1
 For idx = 1 To 5 '←これで 0001〜0005までを表示
 .navigate "HTTP://stock.searchina.ne.jp/data/code.cgi?market=&code=" & Format(idx, "0000")
 '         ↑頭のHTTPを半角小文字に修正後、実行すること
 Do While .Busy = True Or .readyState <> 4
 Loop
 For Each tbl In .document.body.all
 If TypeName(tbl) = "HTMLTable" Then
 Err.Clear
 wk1 = "": wk2 = ""
 wk1 = Trim(tbl.Rows(0).Cells(0).innertext)
 wk2 = Trim(tbl.Rows(1).Cells(0).innertext)
 ret = 1
 If Mid(wk1, 1, 4) = Format(idx, "0000") Then
 Cells(g0 + 1, 1).Value = tbl.Rows(0).Cells(0).innertext
 g0 = g0 + 1
 ret = 1
 ElseIf wk2 = "現在値" Then
 ret = 0
 ElseIf wk2 = "売り気配" Then
 ret = 0
 ElseIf wk2 = "現在値の円換算" Then
 ret = 0
 End If
 If ret = 0 Then
 For Each rw In tbl.Rows
 g1 = 0
 For Each cll In rw.Cells
 Cells(g0 + 1, g1 + 1).Value = cll.innertext
 g1 = g1 + 1
 Next
 g0 = g0 + 1
 Next
 End If
 End If
 Next
 g0 = g0 + 1
 Next
 .Quit
 End With
 Range(Columns(1), Columns(2)).AutoFit
 Set tbl = Nothing
 Set ie = Nothing
 Set rw = Nothing
 Set cll = Nothing
 Application.ScreenUpdating = True
 End Sub
 
 私は、他人が作ったサイトからデータを取り出す というコードは遊びでしか
 作ったことがありません。
 もっと速い方法があるかもしれません。
 
 |  |