質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

1回答

655閲覧

Excelを使ったスクレイピングがうまくいかない

bantake4

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/06/03 06:18

前提・実現したいこと

Excelを使ってスクレイピングの勉強を始めたばかりの者です。
Google翻訳 (https://translate.google.com/?hl=ja#ja/en/) で
日本語「おはよう」と入れたら、英語「Good morning」を Excelの一行目に表示されるようにしたいのですが、うまくいきません。

 '多分ここがおかしい
が問題なのではと思うのですが、あれこれやってもNGです。
どなたか教えていただけないでしょうか

発生している問題・エラーメッセージ

Google翻訳は表示され、「おはよう」も「Good morning」も表示されますが、
Excelの一行目には表示されず、「On Error GoTo Continue」走ります。

該当のソースコード

Sub Honyaku()

Dim objIE As InternetExplorer Dim sURL As String Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True sURL = "https://translate.google.com/?hl=ja#ja/en/" '日本語 → 英語 objIE.navigate sURL Wait objIE objIE.document.getElementById("source").Value = "おはよう" Call WaitFor(WaitTime) 'n秒停止 On Error GoTo Continue Dim Eng As Variant

  '多分ここがおおかしい
Eng = objIE.document.getElementsByClassName("tlid-translation translation")(0).innerText

Cells(1, 1).Value = Eng Set objIE = Nothing Exit Sub

Continue:
MsgBox ("翻訳エラー")
Set objIE = Nothing

End Sub

Sub Wait(ByVal objIE As InternetExplorer)

Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE DoEvents Loop

End Sub
Function WaitFor(ByVal second As Integer)
Dim futureTime As Date

futureTime = DateAdd("s", second, Now) While Now < futureTime DoEvents Wend

End Function

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

以下のように修正してはどうでしょうか。

VBA

1objIE.document.getElementById("sugg-item-en").Click 2Call WaitFor(WaitTime) 'n秒停止 3Eng = objIE.document.getElementsByClassName("text-wrap tlid-copy-target")(0).innertext 4 5'多分ここがおおかしい 6'Eng = objIE.document.getElementsByClassName("tlid-translation translation")(0).innerText

<追記>
私の環境では以下で動作しました。もう一度試してみてください。

VBA

1Sub Honyaku2() 2 Dim objIE As InternetExplorer 3 Dim sURL As String 4 5 Set objIE = CreateObject("InternetExplorer.Application") 6 objIE.Visible = True 7 8 sURL = "https://translate.google.co.jp/#view=home&op=translate&sl=ja&tl=en" 9' sURL = "https://translate.google.com/?hl=ja#ja/en/" '日本語 → 英語 10 11 objIE.navigate sURL 12 Wait objIE 13 14 objIE.document.getElementById("source").Value = "おはよう" 15 16 Call WaitFor(2) '2秒停止 17' Call WaitFor(WaitTime) 'n秒停止 18 19 On Error GoTo Continue 20 21 Dim Eng As Variant 22 Eng = objIE.document.getElementsByClassName("text-wrap tlid-copy-target")(0).innertext 23 '多分ここがおおかしい 24 'Eng = objIE.document.getElementsByClassName("tlid-translation translation")(0).innerText 25 26 Cells(1, 1).Value = Eng 27 Set objIE = Nothing 28 Exit Sub 29 30Continue: 31 MsgBox ("翻訳エラー") 32 Set objIE = Nothing 33End Sub

投稿2019/06/03 10:26

編集2019/06/03 13:45
TanakaHiroaki

総合スコア1063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bantake4

2019/06/03 13:29

ありがとうございます。 やってみましたが、うまくいきません・・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問