参考サイト
https://excel-ubara.com/excelvba4/EXCEL_VBA_401.html
https://powervbadesktop.com/web0/
英検準1級の勉強を始めたので英英辞書から単語の定義を取得するVBAを組んでみた。
WebDriverにwebページの指定をする
Const dictionaryURL As String = "https://www.oxfordlearnersdictionaries.com/definition/english/"
Set Driver = New Selenium.WebDriver
targetUrl = dictionaryURL & word
Driver.AddArgument "headless"
Driver.Start "Chrome"
Driver.Get targetUrl
英英辞書はoxfordを使う
oxfordの辞書は
https://www.oxfordlearnersdictionaries.com/definition/english/
の後に単語を付ければいいので
dictionaryURL & word
で指定している
Driver.AddArgument "headless"
上記指定でChromeをバックグラウンドで実行できる
ディベロッパーツールでタグを特定する
単語の定義をドラック > 右クリック > 検証
タグを確認する
class="def"であることが分かる
タグを指定して要素を特定する
Dim defElements As WebElements
Dim defs As String
Dim defCnt As Integer
Dim ans As Integer
Set defElements = Driver.FindElementsByClass("def")
'すべての説明を結合する
For defCnt = 1 To defElements.Count
defs = defs & defCnt & vbCrLf & defElements.Item(defCnt).Text & vbCrLf
Next
ans = InputBox("入力する定義を選択してください" & vbCrLf & _
"99=全ての定義を入力する" & vbCrLf & vbCrLf & _
defs)
Select Case ans
Case 99
Cells(ActiveCell.Row, columnEngDesc).Value = defs
Case Else
Cells(ActiveCell.Row, columnEngDesc).Value = defElements.Item(ans).Text
End Select
Set defElements = Driver.FindElementsByClass("def")
上記でdefクラスの要素に絞り込む
For defCnt = 1 To defElements.Count
defs = defs & defCnt & vbCrLf & defElements.Item(defCnt).Text & vbCrLf
Next
すべての定義を結合する
ans = InputBox("入力する定義を選択してください" & vbCrLf & _
"99=全ての定義を入力する" & vbCrLf & vbCrLf & _
defs)
Select Case ans
Case 99
ActiveCell.offset(0,1).Value = defs
Case Else
ActiveCell.offset(0,1).Value = defElements.Item(ans).Text
End Select
結合した定義をinputboxで表示しどの定義を取得するか番号を入力してもらう
99を入力した場合はすべての定義を入力する