フレーム内のテキストボックスに入力したい 削除
Message#1 2015年8月17日(月)14時48分 From: 高山修 |
最近、エクセルVBAによるIE操作を始めたばかりの超初心者です。 現在、貴HPを参考にしてデータをダウンローするためのマクロを作成しておりますが テキストデータを入力するところで躓いてしまいました。 ご指導よろしくお願い致します。 <操作内容> 1. IEをVBAで開く 2. 指定したURLで再度ページを表示する 3. ID,PWを入力する 4. ログインボタンをクリックする 5. 照会・ダウンロードのタグ(MainleftMenu)をframeTagClickでクリックする 6. 得意先コードにコードを入力する(frameFormText) ← ここで操作できない <table class="tblSrc"> <tr> <td class="tdlcItemRight"> 得意先コード </TD> <td class="tdlcItemLeft"> <input type="text" name="lcSrcTokuisakiCode" size="22" maxlength="7" value="" class="lcSrcTokuisakiCode"><!-- --></td> <td class="tdlcItemRight"> 得意先名 </td> <td class="tdlcItemLeft"> <input type="text" name="lcSrcTokuisakiNamk" size="32" maxlength="40" value="" class="lcSrcTokuisakiNamk"><!-- --></td> <td class="tdlcbtnsearch"> <INPUT type="image" name="btn030020_search" border="0" src="images/btn/btn_search.gif" alt="検索" onClick='fnc_vmJumpFindKaisha()'><!-- --></td> </tr> <tr> <td rowspan="5" class="tdlcPadding"> </td> </tr> </table> Sub IE_open() 'IE起動 Set objIE = CreateObject("InternetExplorer.application") With objIE '見えるようにする(お約束) .Visible = True '文字列で指定したURLに飛ぶ .Navigate "https://www. " '表示終了まで待つ While .Busy Or .ReadyState <> READYSTATE_COMPLETE DoEvents Wend '項目名を指定して、データをセットする .Document.all.kaiinuserId.Value = "ユーザー名" .Document.all.pswdTxtc.Value = "パスワード" 'ログインボタンを押す .Document.all.btnP010020_logonImgtop.Click '表示終了まで待つ While .Busy Or .ReadyState <> READYSTATE_COMPLETE DoEvents Wend '2秒停止 Call WaitFor(2) 'ボタンをクリック Call frameTagClick(objIE, "IMG", "imgM2104") '表示終了まで待つ While .Busy Or .ReadyState <> READYSTATE_COMPLETE DoEvents Wend '得意先コードのテキストエリアに値を入力 'Call frameFormText (objIE, "lcSrcTokuisakiCode", "1234567") ← ここで入力できない End With End Sub Sub frameFormText(objIE As InternetExplorer, _ nameValue As String, _ tagValue As String) 'フレームのオブジェクトを取得する Set objFrame = objIE.document.frames For i = 0 To objFrame.Length - 1 'フレームドキュメントのオブジェクトを取得する Set objFrameDoc = objFrame(i).document 'フレーム内のテキストボックス・パスワードボックスに値を入力 For Each objTag In objFrameDoc.getElementsByTagName("input") If objTag.name = nameValue Then objTag.Value = tagValue GoTo label01 End If Next 'フレームテキストエリアに値を入力 For Each objTag In objFrameDoc.getElementsByTagName("text") ← 変更 If objTag.name = nameValue Then objTag.Value = tagValue GoTo label01 End If Next Next label01: End Sub |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。