会社システムのIEフォームで、従業員番号を下記htmlのname="reqUserCd"入力すると、
name="reqUserName"に従業員番号対応した名前 山田太郎等が自動で入るのですが、
下記VBAのvalue= で従業員番号を入力しても、名前が反映されません。
名前が自動で反映されるようにしたいです。
IE側は会社システムで編集できないので、VBA側で何とか解決したいのですが、
何から調べればよいのか、キーワードを教えて貰えないでしょうか。
javascript,htmlは素人です。
試したこと
objDOC.parentWindow.execScript ="popupUser('reqUserCd','reqUserName')"
試してみましたが、検索ウィンドウが新規に開く別目的のjavascriptでした。
環境
VBA 7.1
エクセル 2016です
IE11
背景
会社の自部署経費管理のエクセル帳票のデータを、
IEで入力する会社の入力システムに書込もうとしています。
よろしくお願いします。
コード ~~ VBA Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Sub CommandButton1_Click() Dim kenmei As String Dim iraisha As String Dim iraishamei As String Dim basho As String c = Selection.Row d = 20 kenmei = Cells(c, 2).Value iraisha = Cells(c, 3).Value iraishamei = Cells(c, 4).Value basho = "" 'Sub ウインドウを取得する() Dim colSh As Object Dim win As Object Dim objIE As InternetExplorer Set colSh = CreateObject("Shell.Application") For Each win In colSh.Windows '開いているすべてのウインドウに対して処理する If TypeName(win.document) = "HTMLDocument" Then '開いているファイルの種類がHTMLなら処理を実行する If InStr(win.document.Title, "ユーザの") > 0 Then '開いているファイルの「タイトル」にユーザのが含まれているなら Set objIE = win 'このウインドウをobjIEとして指定する Exit For '処理を中断してFor~Nextを終了する End If End If Next If objIE Is Nothing Then 'ウインドウが見つからなければ MsgBox "入力するページが見つかりません" 'メッセージを表示して Exit Sub '処理を終了する End If objIE.Visible = True 'IEを表示 AppActivate objIE Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE '読み込み待ち DoEvents Loop ' フレーム取得 Dim objFRAME As FramesCollection Set objFRAME = objIE.document.frames 'フレームの代入 Dim objDOC As HTMLDocument 'HTMLドキュメント Set objDOC = objFRAME(3).document 'フレームのドキュメント3をセット 動く '件名入力 Dim elPlaceholder1 As IHTMLElement Set elPlaceholder1 = objDOC.getElementById("subjectName") '書込場所指定 elPlaceholder1.Value = kenmei '値貼り付け '従業員番号 Dim elPlaceholder2 As IHTMLElement 'IHTMLElementオブジェクトを準備 Set elPlaceholder2 = objDOC.getElementById("reqUserCd") '書込場所指定 elPlaceholder2.Value = iraisha '値貼り付け objDOC.parentWindow.execScript "javascript:void(0);" 'javascript動作 Sleep (500) '納入場所 Dim elPlaceholder4 As IHTMLElement 'IHTMLElementオブジェクトを準備 Set elPlaceholder4 = objDOC.getElementById("deliveryPlace") '書込場所指定 elPlaceholder4.Value = basho '値貼り付け End Sub ~~ html抜粋 <td class="list_title_bg_left required">依頼者</td> <td class="list_data_bg_left"> <INPUT type="text" id="reqUserCd" name="reqUserCd" value="" size="6" maxlength="7" style="ime-mode: disabled;" class="default"><SCRIPT type="text/javascript" language="JavaScript">tokai.taglib.userPickupAndPopup.regist('reqUserCd', 'reqUserName', '/imart/conf.common-pickup.service', 'user','onKeyUpUserCd');</SCRIPT><A href="javascript:void(0);" onClick="popupUser('reqUserCd','reqUserName');return false;"><IMG border="0" src="/imart/images/standard/search.gif" align="absmiddle"> </A> <INPUT id="reqUserName" type="text" name="reqUserName" size="20" tabindex="-1" value="" class="info" readonly> </td>