Excel VBA質問箱 IV

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

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


1355 / 13645 ツリー ←次へ | 前へ→

【74944】あるサイトから結果データを自動取得 さん 13/10/29(火) 17:46 質問[未読]
【74945】Re:あるサイトから結果データを自動取得 γ 13/10/29(火) 20:41 発言[未読]
【74948】Re:あるサイトから結果データを自動取得 さん 13/10/30(水) 11:30 質問[未読]
【74949】Re:あるサイトから結果データを自動取得 13/10/30(水) 19:16 発言[未読]
【74953】Re:あるサイトから結果データを自動取得 さん 13/10/30(水) 23:11 お礼[未読]
【74950】Re:あるサイトから結果データを自動取得 γ 13/10/30(水) 20:27 発言[未読]
【74951】Re:あるサイトから結果データを自動取得 γ 13/10/30(水) 20:57 発言[未読]
【74952】Re:あるサイトから結果データを自動取得 さん 13/10/30(水) 23:09 お礼[未読]

【74944】あるサイトから結果データを自動取得
質問  さん E-MAIL  - 13/10/29(火) 17:46 -

引用なし
パスワード
   こんばんわ。VBAに挑戦しているのですが、
力尽きたので、お助けをお願いしています。
教えて頂ける方がいましたら宜しくお願いいたします。

(内容)
「sheet1」の「A1」列にある英文字の言葉を
englishnepalidictionaryドットコムの検索ボックスに自動入力
それから、出力の結果を「B1」列に貼り付ける。
上記をA2、A3・・・にも繰り返す、約1000回。

例:エクセルファイルの「sheet1」「A1」列にある英文字(apple)を検索し結果の「स्याउ」をB1列に出力
エクセルファイルの「sheet1」「A2」列にある英文字(ball)を検索し結果の「भकुण्डो, गोल वस्तु」をB2列に出力
A3、A4・・・にも同様

よろしくお願いいたします。

【74945】Re:あるサイトから結果データを自動取得
発言  γ  - 13/10/29(火) 20:41 -

引用なし
パスワード
   こんにちは。

>力尽きたので
現在できているところまで示してください。

【74948】Re:あるサイトから結果データを自動取得
質問  さん  - 13/10/30(水) 11:30 -

引用なし
パスワード
   >>>こんばんわ。VBAに挑戦しているのですが、
力尽きたので、お助けをお願いしています。
教えて頂ける方がいましたら宜しくお願いいたします。

(内容)
「sheet1」の「A1」列にある英文字の言葉を
englishnepalidictionaryドットコムの検索ボックスに自動入力
それから、出力の結果を「B1」列に貼り付ける。
上記をA2、A3・・・にも繰り返す、約1000回。

例:エクセルファイルの「sheet1」「A1」列にある英文字(apple)を検索し結果の「स्याउ」をB1列に出力
エクセルファイルの「sheet1」「A2」列にある英文字(ball)を検索し結果の「भकुण्डो, गोल वस्तु」をB2列に出力
A3、A4・・・にも同様

よろしくお願いいたします。
>>>>==================================


ありがとうございます。
VBAに向いてないのですみません。
こんな形です。

Sub test()

Dim ele As Object
Dim Placeholder As Object


Set sht = Sheets("Sheet1")
RowCount = 1
sht.Range("A" & RowCount) = "英語"
sht.Range("B" & RowCount) = "結果"

Set objIE = CreateObject("InternetExplorer.Application")
  
With objIE
.Visible = True
.navigate "httpwww.englishnepalidictionary.ドットコム"
’禁止語句の為ドットコムにしました。

Set Placeholder = .document.getElementsByName("search-input")
Placeholder.Item(0).Value = "search-input"

.document.getElementById("btnSearch").Click

Set Result = .document.getElementsByName("Search")
Result.Item(0).Value = Search

For Each ele In .document.all

Select Case ele.classname
Case "search-result"
RowCount = RowCount + 1

Case "結果"
sht.Range("B" & RowCount) = Search
End Select
Next ele

End With

Set objIE = Nothing

End Sub

【74949】Re:あるサイトから結果データを自動取得
発言    - 13/10/30(水) 19:16 -

引用なし
パスワード
   こんにちは。

> 力尽きたので
そういうときは、一晩ぐっすり休んで 翌日もう一度挑戦して吉です v^^

一生懸命勉強したときって、頭はパンパン・頭の中は新しい知識が
グッチャグチャに押し込まれている状態です。そこで一晩眠ると、
眠っているうちに、脳が知識の交通整理・整理整頓をしてくれるんです。
(脳科学的にも、確認されているらしいです)
そうすると今日は分からなかったことが明日は分かったりします。


きょうはもうVBAは終わりにして、お風呂に入っておいしいものでも食べて
「これも勉強のうち」と思ってあったかくして休むのがいいですよ。
間違えても、徹夜で頑張ろうなんて思われませんように。

【74950】Re:あるサイトから結果データを自動取得
発言  γ  - 13/10/30(水) 20:27 -

引用なし
パスワード
   こんな感じでしょうか。
タイミングの問題で、うまくいかないことがありました。
時間待ちのところは適宜調節してみてください。

Private Declare Sub Sleep Lib "KERNEL32.dll" (ByVal dwMilliseconds As Long)
'参照設定 Microsoft Internet Controls(Microsoft Browser Helpers)
'Microsoft HTML Object Library の 2つを忘れずに
Sub test()
  Dim objIE As Object
  Dim sht As Worksheet
  Dim result
  Dim s As String
  Dim k As Long
  Dim placeholder As Object
  Dim ss As String
  
  Set sht = Sheets("Sheet1")

  Set objIE = CreateObject("InternetExplorer.Application")
 
  With objIE
    .Visible = True 'デバッグ中は可視にしたほうが良い
    .Navigate "★//www.englishnepalidictionary.com" '5文字省略
    While objIE.readyState <> READYSTATE_COMPLETE Or objIE.Busy = True
      DoEvents
    Wend
    DoEvents

    For k = 2 To sht.Range("A1").End(xlDown).Row
      s = sht.Cells(k, 1).Value
      Set placeholder = .document.getElementById("q")
      placeholder.Value = s

      .document.getElementById("btnSearch").Click
      While objIE.readyState <> READYSTATE_COMPLETE Or objIE.Busy = True
        DoEvents
      Wend
      Sleep 1000

      ss = .document.getElementsByTagName("h3").Item(0).innerText
      sht.Cells(k, 2).Value = Replace(ss, s & " - ", "")
    Next
  End With
  
  objIE.Quit
  Set objIE = Nothing
End Sub

【74951】Re:あるサイトから結果データを自動取得
発言  γ  - 13/10/30(水) 20:57 -

引用なし
パスワード
   IEを経由してもよいのですが、XMLHTTPを使うこともできます。
get メソッドなので、urlの後ろに解釈対象の英語をつけてRequestを出し、
返ってきたHTMLソースから<h3>タグを正規表現で取り出せばよいでしょう。

--- 一例です。参照設定は不要です。

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub test2()
  Dim HTTPRequest As Object '半角に修正してください。
  Dim re As Object
  Dim m As Object
  Dim s As String
  Dim word As String
  Dim k As Long
  
  Const url = "★//www.englishnepalidictionary.com/?q=" '5文字省略
  
  Set HTTPRequest = CreateObject("Msxml2.XMLHTTP")'要修正
  
  Set re = CreateObject("VBScript.RegExp")
  re.Pattern = "<h3>(.*?)</h3>"
  
  For k = 2 To Range("A1").End(xlDown).Row
    word = Cells(k, 1).Value
    With HTTPRequest
      .Open "GET", url & word, False
      .setRequestHeader "If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT"
      .Send
      s = .responseText
    End With
    
    Set m = re.Execute(s)
    If m.Count > 0 Then
      Cells(k, 2).Value = Replace(m(0).Submatches(0), word & " - ", "")
    End If
    Sleep 1000 ' アクセス間隔を1秒あける(岡崎図書館事件を踏まえ)
  Next
End Sub

【74952】Re:あるサイトから結果データを自動取得
お礼  さん  - 13/10/30(水) 23:09 -

引用なし
パスワード
   私にはわからないこと沢山ありますが
取敢えず問題なく動きましたことをご報告させていただきます。

ご丁寧に説明も設けてくださいましたことに
心からお礼を申し上げたいと思います。

本当にありがとうございました。
今後ともとうぞよろしくお願いいたします。

【74953】Re:あるサイトから結果データを自動取得
お礼  さん  - 13/10/30(水) 23:11 -

引用なし
パスワード
   確かに
ありがとうございます。

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