Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


71318 / 76732 ←次へ | 前へ→

【9909】Re:インターネットからデータを自動取得できるんでしょうか?
回答  Ron E-MAIL  - 03/12/20(土) 19:21 -

引用なし
パスワード
   こんばんは。
↓で表示待ちをしていましたが、非同期なようで
Do While myIE.Busy = True
  DoEvents
Loop
↓を追加して待ちます(3秒)。時間は環境に合わせてください。
Application.Wait Now() + TimeValue("00:00:03")

次ページ以降にも対応させました。
尚、業種IDは、トップページのソースに<OPTION Value="2050">建設業のような感じで書いてありますので、確認してリストを作っておくと便利です。
建設業は2050ですので、InputBoxが表示されたら2050と入力してお試しください。

Sub getWebData3()

  Const myURL = "http://finance.nifty.com/stocks/servlet/stocks034"
  Dim NextURL As String
  Dim myIE As New InternetExplorer
  Dim GyoshuID As String
  Dim myObj As Object
  Dim i As Long, j As Long
  Dim myTitle As Variant
  Dim PageCnt As Long
  
  GyoshuID = InputBox("業種IDを4桁で入力してください", "業種選択")
  myTitle = Array("コード", "銘柄名", "市場", "業種", "現在値", "前日比", "総合診断")
  myIE.Visible = True
  myIE.navigate myURL
  
  Do While myIE.Busy = True
    DoEvents
  Loop
  Application.Wait Now() + TimeValue("00:00:03")
  On Error GoTo trap
  myIE.document.form1("type").Value = GyoshuID
  
  On Error GoTo 0
  myIE.document.form1.submit
  
  i = 1
  Cells.Delete
  Range("a1").Resize(, 7).Value = myTitle
  Do
    Do While myIE.Busy = True
      DoEvents
    Loop
    Application.Wait Now() + TimeValue("00:00:03")
    
    For Each myObj In myIE.document.all("formpl").all
      If myObj.tagName = "TR" And myObj.innerText <> "" Then
        i = i + 1
        j = 1
      End If
      If myObj.tagName = "TD" Then
        If j <= 7 Then Cells(i, j).Value = myObj.innerText
        j = j + 1
      End If
    Next
    For Each myObj In myIE.document.all
      If myObj.innerText = "次へ" Then
        If InStr(1, myObj.innerHTML, "href") Then
          Exit For
        Else
          Exit Do
        End If
      End If
    Next
    PageCnt = PageCnt + 1
    NextURL = "javascript:document.form1.pageno.value='" & PageCnt & "n';document.form1.submit()"
    myIE.navigate NextURL

  Loop
  myIE.Quit
  Set myIE = Nothing
  MsgBox "終了しました"
  
  Exit Sub
  
trap:
  MsgBox "NG"
End Sub
お試しください。
3 hits

【9893】インターネットからデータを自動取得できるんでしょうか? トモ 03/12/19(金) 20:22 質問
【9904】Re:インターネットからデータを自動取得でき... Ron 03/12/20(土) 16:35 回答
【9905】Re:インターネットからデータを自動取得でき... Ron 03/12/20(土) 16:37 回答
【9908】Re:インターネットからデータを自動取得でき... トモ 03/12/20(土) 17:43 質問
【9909】Re:インターネットからデータを自動取得でき... Ron 03/12/20(土) 19:21 回答
【9910】ありがとうございました! トモ 03/12/20(土) 19:57 お礼

71318 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free