前提・実現したいこと
VBAのIE操作について質問致します。
社内PDMシステムの検索機能をVBAのユーザフォームから操作したいのですがうまくいきません。
パスワード入力してPDMシステムにログインするところまでは行けたのですが、
そこからアイコンをクリックして検索ワード入力画面へのページ遷移が実行できません。
ネットで調べて色々試してみましたが特にエラー等も出ず無理でした。
何かヒントをご教示いただければと思い投稿いたしました。
当方プログラムの知識及び経験はほぼ皆無です。
下記ソースコードはすべて手入力していますので書式にご無礼がありましたらご容赦ください。
追加情報が必要であれば可能な限り迅速に対応いたします。
何卒宜しくお願い致します。
###当該アイコンのHTML要素
<a href="javascript":openWindow('/pdm/cozy/showFindDialog','content','',1,false,false,false,false,false,'','')" shape="">
<img width="10" height="10" title="検索" class="icon_button" alt="検索" src="/pdm/ematrix/images/icons/search.gif" border="0" />
</a>
もっと上位タグからだと
<frameset rows="26,*,0" border="0" frameBorder="NO" frameSpacing="0" onunload="removeState()"> <frame name="topFrame" src="/pdm/cozy/showNavigatorTopFrame?cozy_state_id=1234567890& frameBorder="1" noresize="noresize" scrolling="no"> <!--DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"--> <html>ih <body> <form name="menuForm" action="/pdm/cozy/applyVisuals" encType="application/x-www-form-urlencoded" method="post" target="_parent"> <table width="100%" class="main_head" border="0" cellSpacing="0" cellPadding="0"> <tbody> <tr> <td noWrap="nowrap" rowSpan="1" colSpan="1"> <img width="10" height="10" alt="" src="/pdm/images/space.gif" /> <img width="10" height="10" alt="Login User" src="/pdm/ematrix/images/login_user_jp.gif" border="0" /> <img width="10" height="10" alt="" src="/pdm/images/space.gif" />となっており、これ以降、前述の
<a href="javascript":openwindow('/pdm/cozy/***************************************
となり各アイコン要素の記述が続きます。
###VBAソースコード
Private Sub btnZ_Click
'ページ呼び出し&待機
Dim objIE as InternetExplorer
Set objIE = New InternetExplorerMedium
With objIE
.Visible = True
.navigate "http://pdmweb.aaaaaaaa/pdm/"
End With
Call waitIE(objIE)
'システムログイン&待機
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document
With htmlDoc
.getElementsByName("mx_username")(0).Value = aaaaa
.getElementsByName("mx_password")(0).Value = 12345
.forms(0).submit
End With
Set htmlDoc = Nothing
Call waitIE(objIE)
Set htmlDoc = objIE.document
Application.Wait [now()+"00:00:03"]
'ここからアイコンクリック用のコード
'試した事その1(javascript直接実行)
Dim aaa As Object
Set aaa = objIE
aaa.document.Script.setTimeout"javascript:openWindow('/pdm/cozy/showFindDialog','content','',1,false,false,false,false,false,'','')"
Application.Wait [now()+"00:00:03"]
'試した事その2(javascript直接実行)
Dim aaa As Object
Set aaa = objIE
aaa.navigate"javascript:openWindow('/pdm/cozy/showFindDialog','content','',1,false,false,false,false,false,'','')"
'試した事その3(class属性から探す)
With htmlDoc
.getElementsByClassName("icon_button")(0).Click
End With
'試した事その4(alt属性から探す)
Dim objTag As Object
Set objTag = objIE.document
For Each objTag In htmlDoc.getElementsByTagName("a")
If objTag.alt = 検索 Then
objTag.Click
Exit For
End If
Next
'試した事その5(alt属性から探す)
'省略
For Each objTag In htmlDoc.getElementsByTagName("a")
If InStr(objTag.outerHTML,"/pdm/ematrix/images/icons/search.gif") > 0 Then
objTag.Click
'省略
'試した事その6(alt属性から探す)
Dim inputTags As IHTMLElementColection
Set inputTags = htmlDoc.getElementsByTagname("a")
Dim inputTag As IHTMLElement
For Each inputTag in inputTags
If inputTag.alt = 検索 Then
inputTag.Click
Exit For
End If
Next
'試した事その7(alt属性から探す)
'省略
If InStr(inputTag.src,"/pdm/ematrix/images/icons/search.gif") > 0 Then
inputTag.Click
'省略
補足情報(FW/ツールのバージョンなど)
PDMシステムに関する情報が不明です
WEB上で操作できるものなのは間違いないですが・・
以上、長文になり申し訳ありませんが宜しくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/27 13:44
2021/05/28 09:37