そのため、このプロジェクトに関してはすでにいくつかの投稿を行っていることを言及する必要があると感じていますが、その後、いくつかの進歩を遂げました。
私の以前の投稿を読んでいない人のために、私はオンライン メンバーシップ サイトの名前のデータベースを持っています。そのほとんどの性別は、別のシートの 6,000 名の長いリストから VLOOKUP で割り当てられています。残りの場合、それらは「ERR」として表示されます。これは、VB コードが引き継いで性別推測 Web サイトで名前を検索し、「F」、「M」、または「U」を返すことができるポイントです。 」 (不明) それらのセルの場合。性別列で使用した関数は次のとおりです。
=IF(ISERROR(VLOOKUP($A41,NameDatabase!$A$2:$B$8000,2,FALSE)),"ERR",VLOOKUP($A41,NameDatabase!$A$2:$B$8000,2,FALSE))
残りを処理する VBA コードは次のとおりです。
Sub DetermineGender()
Dim dbsheet As Worksheet
Set dbsheet = ThisWorkbook.Sheets("memberdata2")
lr = dbsheet.Cells(Rows.Count, 1).End(xlUp).Row
SelRow = Selection.Row
'Gender (Column H)
GenderText = dbsheet.Cells(SelRow, 8)
'Names (Column A)
NamesText = dbsheet.Cells(SelRow, 1)
'Loop Routine
For Row = 2 To lr
If NamesText.Value = "ERR" Then
Dim IE As New InternetExplorer
IE.Visible = True
IE.navigate "http://www.gpeters.com/names/baby-names.php?name=" & NamesText
Do
DoEvents
Loop Until IE.readyState = READYSTATE_COMPLETE
Dim Doc As HTMLDocument
Set Doc = IE.Document
If Doc.getElementsByTagName("b").Item(1).innerText = "It's a boy!" Then
theGenderText.Value = "F"
ElseIf Doc.getElementsByTagName("b").Item(1).innerText = "It's a girl!" Then
GenderText.Value = "M"
Else
GenderText.Value = "U"
End If
End If
Next
End Sub
私は VBA のまったくの初心者であり、私のコードのほとんどは 4 ~ 5 の異なるソースから集められたものです。「実行時エラー 424: オブジェクトが必要です」というメッセージが表示されると言いましたが、私のコードには他のエラーが存在することは確かです。