0

そのため、このプロジェクトに関してはすでにいくつかの投稿を行っていることを言及する必要があると感じていますが、その後、いくつかの進歩を遂げました。

私の以前の投稿を読んでいない人のために、私はオンライン メンバーシップ サイトの名前のデータベースを持っています。そのほとんどの性別は、別のシートの 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: オブジェクトが必要です」というメッセージが表示されると言いましたが、私のコードには他のエラーが存在することは確かです。

4

2 に答える 2

0

If Doc.getElementsByTagName("b").Item(1).innerText = "男の子です!" 次に theGenderText.Value = "F" ElseIf Doc.getElementsByTagName("b").Item(1).innerText = "女の子です!" 次に、GenderText.Value = "M"

TheGenderText.Value = "F"(女性) の代わりに "M"(男性) をすべきではありませんか? 男の子です!? ElseIf 部分の同じ観察...

また、If ステートメントの最初の部分で theGenderText を参照していますが、ElseIf が GenderText を示しています( " the" なし)...これがエラーの原因である可能性があります。

于 2013-05-20T07:05:52.770 に答える