内容に不備があるとご指摘をいただきましたので、修正いたします。
至らぬ点が多く申し訳ございませんが、よろしくお願いいたします。
以下のVBAコードで客先ウェブサイトに記載されているテーブルから一要素をクリックしたいのですが、
正しく要素が特定できていないせいか、太字部分が実行されません。
【実行環境】
Windows 10Pro
【やりたいこと】
対象のウェブサイトにログインし、指定箇所をクリックして内容の確認を自動化したいです。
しかし、指定箇所の要素が正しく特定されておらず、クリックされません。
クリックしたい箇所は以下HTMLの**<A HREF = "BudS05_FR.asp" ONCLICK="Link_Nouki('Z')">1</A>**になります。
【試したこと】
以下の修正コードを試しましたが、同じ結果となりました。
For Each tag In links
If tag.getAttribute("href") = "BudS05_FR.asp" And tag.getAttribute("onclick") Like "Link_Nouki*" Then
Set targetElement = tag
Exit For
End If
Next tag
その他、インターネット等で様々な方法を試みましたが、改善に至っていない状況です。
知識不足で申し訳ございませんが、何卒ご指導をいただけますと幸いです。
【VBAコード】
Sub LoginMacro()
Dim objIE As InternetExplorer
Dim win As Object
Dim winshell As Object
Dim URL As String
Dim UserName As String- リスト
Dim Password As String
Dim searchButton As Object
Dim TagIndex As Integer
Dim Elements As Object
Dim Element As Object
Set winshell = CreateObject("Shell.Application") ' Internet Explorerの新しいインスタンスを作成 Set objIE = CreateObject("InternetExplorer.Application") ' URLと認証情報を設定 URL = "https://xxxxx.jp" UserName = "user name" Password = "pass word" ' Internet Explorerを表示 objIE.Visible = True ' 指定されたURLにアクセス objIE.navigate URL For Each win In winshell.Windows If win.Name = "Internet Explorer" Then Set objIE = win Exit For End If Next Application.Wait Now + TimeValue("0:00:05") For Each win In winshell.Windows If win.Name = "Internet Explorer" Then Set objIE = win Exit For End If Next ' ページの読み込みが完了するまで待機 Do While objIE.Busy = True DoEvents Application.Wait Now + TimeValue("0:00:05") Loop Do While objIE.readyState <> 4 Application.Wait Now + TimeValue("0:00:05") DoEvents Loop Application.Wait Now + TimeValue("0:00:05") Dim HTMLDoc As HTMLDocument Set HTMLDoc = objIE.document With HTMLDoc ' ユーザー名とパスワードを入力 .getElementById("Ecom_User_ID").Value = UserName .getElementById("Ecom_Password").Value = Password ' OKボタンをクリック .getElementsByClassName("btn-login")(1).Click Debug.Print "Button-name: " & .getElementsByClassName("btn-login")(1).Value Application.Wait Now + TimeValue("0:00:05") ' 検索ボタンをクリック Set searchButton = .getElementsByName("Kensaku")(0) searchButton.Click Application.Wait Now + TimeValue("0:00:05") Do While objIE.readyState <> 4 Application.Wait Now + TimeValue("0:00:05") DoEvents Loop ' Find the desired element Set Elements = HTMLDoc.getElementsByTagName("A")
** For Each Element In Elements
If Element.getAttribute("HREF") = "BudS05_FR.asp" And Element.getAttribute("ONCLICK") = "Link_Nouki('Z')" Then
' Click the element
Element.Click
Exit For
End If
Next Element**
End With Set objIE = Nothing
End Sub
【HTML(一部省略)】
HTML>
<TD WIDTH="15%" ALIGN="CENTER"> <TABLE BORDER="1" CELLSPACING="0" CELLPADDING="0" WIDTH="" BGCOLOR="White"> <TR> <TD ALIGN="CENTER" BGCOLOR=powderblue WIDTH="10%" NOWRAP HEIGHT="16"> <FONT SIZE="2"><B>MK納期確定当日</B></FONT></TD> </TR> <TR> <TD ALIGN="CENTER" WIDTH="10%" NOWRAP HEIGHT="16"> <FONT SIZE="2">
0
</FONT></TD>
</TR>
<!-- 1--><TR> <TD ALIGN="CENTER" WIDTH="10%" NOWRAP HEIGHT="16"> <FONT SIZE="2"> <A HREF = "BudS05_FR.asp" ONCLICK="Link_Nouki('1')">1</A>
</FONT></TD> </TR> <TR> <TD ALIGN="CENTER" WIDTH="10%" NOWRAP HEIGHT="16"> <FONT SIZE="2">
0
</FONT></TD>
</TR>
<TR> <TD ALIGN="CENTER" WIDTH="10%" NOWRAP HEIGHT="16"> <FONT SIZE="2">
0
</FONT></TD>
</TR>
<TR> <TD ALIGN="CENTER" WIDTH="10%" NOWRAP HEIGHT="16"> <FONT SIZE="2">
0
</FONT></TD>
</TR>
<TR> <TD ALIGN="CENTER" WIDTH="10%" NOWRAP HEIGHT="16"> <FONT SIZE="2">
0
</FONT></TD>
</TR>
<TR> <TD ALIGN="CENTER" WIDTH="10%" NOWRAP HEIGHT="16"> <FONT SIZE="2">
0
</FONT></TD>
</TR>
<!-- 1--><TR> <TD ALIGN="CENTER" WIDTH="" NOWRAP HEIGHT="16"> <FONT SIZE="2"> ** <A HREF = "BudS05_FR.asp" ONCLICK="Link_Nouki('Z')">1</A>**
</TABLE> <TABLE> <FONT SIZE="2"> * 数字をクリックすると各処理画面へ遷移します。</FONT> </TABLE> <FORM NAME="FORM4" METHOD="POST" ACTION="BudS05_FR.asp" TARGET="_top"> <INPUT TYPE="HIDDEN" NAME="hdnSenimoto_S02" VALUE="MK" SIZE=2> <INPUT TYPE="HIDDEN" NAME="hdnPriority_Code_bef" VALUE=""SIZE=1> <INPUT TYPE="HIDDEN" NAME="hdnMaker_bef" VALUE="A412"SIZE=4> <INPUT TYPE="HIDDEN" NAME="hdnDepo_bef" VALUE=""SIZE=2><BR> <INPUT TYPE="HIDDEN" NAME="hdnJishaHantei" VALUE="1"> </FORM> <FORM NAME="FORM5" METHOD="POST" ACTION="BudS05_FR.asp" TARGET="_top"> <INPUT TYPE="HIDDEN" NAME="hdnSenimoto_S02" VALUE="MI" SIZE=2> <INPUT TYPE="HIDDEN" NAME="hdnPriority_Code_bef" VALUE=""SIZE=1> <INPUT TYPE="HIDDEN" NAME="hdnMaker_bef" VALUE="A412"SIZE=4> <INPUT TYPE="HIDDEN" NAME="hdnDepo_bef" VALUE=""SIZE=2><BR> <INPUT TYPE="HIDDEN" NAME="hdnJishaHantei" VALUE="1"> </FORM> <FORM NAME="FORM6" METHOD="POST" ACTION="BudS05_FR.asp" TARGET="_top"> <INPUT TYPE="HIDDEN" NAME="hdnSenimoto_S02" VALUE="SA" SIZE=2> <INPUT TYPE="HIDDEN" NAME="hdnPriority_Code_bef" VALUE=""SIZE=1> <INPUT TYPE="HIDDEN" NAME="hdnMaker_bef" VALUE="A412"SIZE=4> <INPUT TYPE="HIDDEN" NAME="hdnDepo_bef" VALUE=""SIZE=2><BR> <INPUT TYPE="HIDDEN" NAME="hdnJishaHantei" VALUE="1"> </FORM> <!--確認画面への受渡し--> <!--直送対応画面への受渡し--> <!--メーカー納期確定当日画面への引渡し--> <FORM NAME="FORM9" METHOD="POST" ACTION="BudS05_FR.asp" TARGET="_top"> <INPUT TYPE="HIDDEN" NAME="hdnSenimoto_S02" VALUE="NT" SIZE=2> <INPUT TYPE="HIDDEN" NAME="hdnPriority_Code_bef" VALUE=""SIZE=1> <INPUT TYPE="HIDDEN" NAME="hdnMaker_bef" VALUE="A412"SIZE=4> <INPUT TYPE="HIDDEN" NAME="hdnDepo_bef" VALUE=""SIZE=2><BR> <INPUT TYPE="HIDDEN" NAME="hdnJishaHantei" VALUE="1"> </FORM> <!--メーカー納期確定画面への引渡し--> <FORM NAME="FORM10" METHOD="POST" ACTION="BudS05_FR.asp" TARGET="_top"> <INPUT TYPE="HIDDEN" NAME="hdnSenimoto_S02" VALUE="NK" SIZE=2> <INPUT TYPE="HIDDEN" NAME="hdnPriority_Code_bef" VALUE=""SIZE=1> <INPUT TYPE="HIDDEN" NAME="hdnMaker_bef" VALUE="A412"SIZE=4> <INPUT TYPE="HIDDEN" NAME="hdnDepo_bef" VALUE=""SIZE=2><BR> <INPUT TYPE="HIDDEN" NAME="hdnJishaHantei" VALUE="1"> </FORM> <!----------------------------------------------------------------------------> <SCRIPT LANGUAGE="VBScript"> <!-- Dim strprt_code Sub Link_MAKER(strprt_code) If strprt_code ="Z" Then Else FORM4.hdnPriority_Code_bef.VALUE = strprt_code End If Call FORM4.SUBMIT() End Sub Sub Link_MIKAITOU(strprt_code) If strprt_code ="Z" Then Else FORM5.hdnPriority_Code_bef.VALUE = strprt_code End If Call FORM5.SUBMIT() End Sub Sub Link_SAICHO(strprt_code) If strprt_code ="Z" Then Else FORM6.hdnPriority_Code_bef.VALUE = strprt_code End If Call FORM6.SUBMIT() End Sub Sub Link_KAKUNIN() Call FORM7.SUBMIT() End Sub Sub Link_CHOKUSOU() Call FORM8.SUBMIT() End Sub '''2005.05.30→ Sub Link_Nouki(strPrm) If strPrm = "Z" then Else Form9.hdnPriority_Code_bef.Value = strPrm End if Form9.Submit() End Sub Sub Link_NoukiAll(strPrm) If strPrm = "Z" then Else Form10.hdnPriority_Code_bef.Value = strPrm End if Form10.Submit() End Sub '''2005.05.30← Sub WinOpn() End Sub Sub ReturnMenu() parent.location = "BUD_MENU.asp" End Sub --> </SCRIPT> </BODY> </HTML></FONT></TD> </TR> </TABLE> </TD>
回答1件
あなたの回答
tips
プレビュー