Исходя из вашего кода и описания, я полагаю, что вы проверяете TextBox, а затем добавляете стиль CSS к кнопке div или submit и используете его для включения / выключения кнопки submit.
Поскольку я не являюсьнашел метод прямого изменения стиля CSS или отключенного атрибута с помощью VBA.
В качестве обходного пути, я предлагаю вам добавить скрытую кнопку на вашем веб-сайте, а затем, в событии щелчка, вы можете проверить, является ли текстовое поле пустым, и включить / отключить кнопку отправки.После установки значения текстового поля, вы можете вызвать эту кнопку и проверить значение текстового поля и включить / отключить кнопку отправки.
код веб-страницы, как показано ниже:
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script>
$(function () {
$("#btnSubmit").prop("disabled", true);
function validate() {
if ($("#Text1").val() != '') {
$("#btnSubmit").prop("disabled", false);
}
else {
$("#btnSubmit").prop("disabled", true);
}
}
$("#Text1").change(function () {
validate();
});
$("#btnvalidte").click(function () {
validate();
});
});
</script>
<div>
<input id="Text1" type="text" value="" />
<input id="btnvalidte" type="button" value="validate" style="display:none" />
<input id="btnSubmit" type="button" value="Submit" />
</div>
код VBA какthis:
Sub Test()
Dim ie As Object
Dim Rank As Object
Set ie = CreateObject("InternetExplorer.application")
ie.Visible = True
ie.Navigate ("http://localhost:54382/HtmlPage47.html")
Do
If ie.ReadyState = 4 Then
Exit Do
Else
End If
Loop
Set doc = ie.document
'get the excel data
Dim val As String
val = Range("C2").Value
'find the textbox and set the value
doc.getElementById("Text1").Value = val
'trigger the validate button to check whether the textbox is empty and enable the submit button
doc.getElementById("btnvalidte").Click
End Sub
Снимок экрана: this .
Edit :
Вы можете попробовать использовать этот метод:используйте метод SendKeys для ввода значений в текстовое поле, затем нажмите кнопку Tab, чтобы активировать правило проверки.
Код, как показано ниже:
Sub Test()
Dim ie As Object
Dim Rank As Object
Set ie = CreateObject("InternetExplorer.application")
ie.Visible = True
ie.Navigate ("http://localhost:54382/HtmlPage47.html")
Do
If ie.readyState = 4 Then
Exit Do
Else
End If
Loop
Set doc = ie.document
'get the excel data
Dim val As String
val = Range("C2").Value
'find the textbox and set the value
Set TextBoxfield = doc.getElementById("Text1")
'set focus on the textbox.
With TextBoxfield
.Focus
End With
'enter value into the textbox.
SendKeys CStr(val)
'press the Tab button to change the focus and try to trigger the validation rule
SendKeys "{TAB}"
While ie.Busy Or ie.readyState < 4: DoEvents: Wend
End Sub