I 웹 양식을 채우기 위해 다음 코드를 가지고 있지만이 특정 웹 사이트의 코드가 작동하지 않는 :VBA Internet Explorer를 WebForm의 채울 수없는
Const loginSelectSistema_Name = "url"
Const loginInputUsuário_Name = "Usuario"
Const loginInputSenha_Name = "Senha"
Const loginInputOk_Name = "imageField2"
Const USERNAME = "NomeUsuário"
Const PASSWORD = "SenhaAcesso"
Dim ieApp As InternetExplorer
Dim iePage As HTMLDocument
Function loginPage()
'
Set ieApp = New InternetExplorer
'
ieApp.Visible = True
ieApp.navigate (loginWebsite)
'
'Wait for page to load
Do Until ieApp.ReadyState = READYSTATE_COMPLETE
Loop
'
'
Set iePage = ieApp.Document
'
fillInputObject loginSelectSistema_Name, "jcaa"
fillInputObject loginInputUsuário_Name, USERNAME
fillInputObject loginInputSenha_Name, PASSWORD
'
iePage.all.Item(loginInputOk_Name).Click
End Function
Private Sub fillInputObject(ByVal objectName As String, ByVal value As String, Optional IdentificadorElemento As IdentificadorElementoHTML = Nome)
'
'Preenche o Objeto Input com um determinado valor
Dim elementHTML As HTMLObjectElement
'
If (IdentificadorElemento = Nome) Then
Set elementHTML = iePage.getElementsByName(objectName).Item
End If
'
If (IdentificadorElemento = Id) Then
Set elementHTML = iePage.getElementById(objectName)
End If
'
If (IsObject(elementHTML)) Then
If (Not (elementHTML Is Nothing)) Then
elementHTML.value = value
End If
End If
End Sub
때 디버깅 기능 fillInputObject
의 라인 : If (Not (elementHTML Is Nothing)) Then
값은 항상 Nothing이며 webform은 채워지지 않습니다.
<table width="90%" cellspacing="0" cellpadding="0" bordercolor="#DADADA" border="1" bgcolor="#F7F7F8" align="center" height="110">
<tbody><tr height="2"><td width="62"></td><td width="0"></td><td width="592"></td><td width="223"></td></tr>
<tr height="15">
<td colspan="4" bordercolor="#F7F7F8" style="vertical-align:left"><strong>Selecione o Sistema:</strong></td>
</tr>
<tr height="15">
<td colspan="4" bordercolor="#F7F7F8" style="vertical-align:left">
<font size="1px" face="Verdana, Arial, Helvetica, sans-serif">
<select name="url" class="combobox" style="width:180px;">
<option value="jcaa">Cadastro de Alunos</option>
<option value="paef">Cadastro Funcional</option>
<option value="paec">Controle de Freqüência</option>
<option value="papc">Desp de Pessoal (SDPE)</option>
<option value="jcgo">Cargos</option>
<option value="paea">Contagem de Tempo</option>
<option value="jata">Formação Curricular</option>
<option value="jrha">Gratificação/Promoção QM</option>
<option value="paex">PAEX - Cadastro Funcional</option>
</select>
</font>
</td>
</tr>
<tr height="2"><td colspan="4" bordercolor="#F7F7F8"></td></tr>
<tr><td colspan="2" bordercolor="#F7F7F8" align="left">
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
Usuário
</font>
</td>
<td colspan="2" bordercolor="#F7F7F8" align="left">
<input id="Usuario" name="Usuario" size="10" maxlength="10" value="SE0452336A" type="text">
</td></tr>
<tr><td colspan="2" bordercolor="#F7F7F8" align="left">
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
Senha
</font>
</td>
<td colspan="2" bordercolor="#F7F7F8" align="left">
<input id="Senha" name="Senha" size="14" maxlength="14" type="password">
</td></tr>
<tr>
<td colspan="2" bordercolor="#F7F7F8" align="left">
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
</font>
</td>
<td colspan="2" bordercolor="#F7F7F8" align="left">
<input name="imageField2" src="images/ok_sen.gif" width="24" type="image" border="0" height="17">
</td></tr>
</tbody></table>
내가 잘못 뭐하는 거지 :
아래는 내가 웹 양식을 채우기 위해 노력하고 HTML의 페이지는?
은'Nome'과'IdentificadorElementoHTML가'어떻게 구현에 무엇입니까? – dee
@dee IdentificadorElementoHTML은 Nome (정수를 나타냅니다.)의 일부 요소를 보유하는 Enum입니다. 코드의 유연성을 높이기위한 것이고, 값이 Nome이면 값이 Id 인 경우 요소의 이름을 가져오고, 요소는 ID에 의해 얻고, 등등 ... 그것은 단지 웹 페이지 요소 식별자에 달려있다 ... – tdmsoares
주어진 HTML로 코드를 테스트 할 때'Usuario'와'Senha'에 대해 잘 작동한다. 'loginInputUsuário_Name'과'loginInputSenha_Name'에 어떤 값이 있습니까? – dee