2015-06-21 5 views
2

Я пытаюсь снять флажок уже установленный на веб-странице, используя excel VBA.Снимите флажок в IE

HTML код:

<div class="mycheckbox checked"> 
<label class="mycheckbox1 checked" data-initialize="checkbox"> 
    <input name=<name> class=<class> id=<id> type="checkbox" checked="checked"></input></label></div> 

VBA код заглушки:

Public Sub uncheck(IE As Object) 
    Dim Element As Object 
     With IE.Document 
      Set Element = .getElementById(<id>) 
      Element.Checked = False 
      Element.defaultChecked = False   
     End With 
    End Sub 

Это не работает так, как нужно, как изменения HTML кода в -

<div class="mycheckbox checked"> 
<label class="mycheckbox1 checked" data-initialize="checkbox"> 
    <input name=<name> class=<class> id=<id> type="checkbox" checked=""></input></label></div> 

флажок не снят поскольку есть еще проверенный атрибут

Даже попробовал нижеследующий (нажав на флажок). Он ничего не делает -

Public Sub uncheck(IE As Object) 
    Dim Element As Object 
     With IE.Document 
      Set Element = .getElementById(<id>) 
      Element.Click 
     End With 
    End Sub 

Любые предложения? Или я могу знать, почему мой подход не работает?

+0

Есть ли флажок в составе формы? –

+0

Эй! Я редактирую вопрос, когда нашел [this] (http://getfuelux.com/javascript.html#checkbox-usage-data-attributes). Думаю, я добавлю немного больше html, которые могут помочь выяснить. –

+0

Почему бы не заменить '', '' и '' с определенными строковыми значениями? Это улучшило бы читаемость, это сбивает с толку, поскольку на самом деле это неправильный синтаксис. – omegastripes

ответ

3

Вот код, который позволяет сделать общий тест, если можно снять флажок:

Public Sub TestIE() 
    Dim IE As Object 
    Dim Element As Object 
    Set IE = CreateObject("InternetExplorer.Application") 
    IE.Visible = True 
    IE.Navigate "about:blank" 
    IE.document.write "<html><body><input name=""chkbx_name"" class=""chkbx_cls"" id=""chkbx"" type=""checkbox"" checked=""checked""></body></html>" 
    IE.document.parentWindow.alert "Verify checkbox is checked" 
    Set Element = IE.document.getElementById("chkbx") 
    Element.Checked = False 
    IE.document.parentWindow.alert "Verify checkbox is unchecked" 
    IE.Quit 
End Sub 

Для меня это работает, как ожидалось: показывает проверили флажок и первое предупреждение, а затем неустановленными его и показывает второе предупреждение , Если ваша веб-страница работает по-другому, она платит, чтобы проверить флажок на вашей веб-странице для некоторых onclick или onchange обработчиком событий через инструменты разработчика. В IE нажмите F12, нажмите DOM Explorer, установите флажок в поле HTML, нажмите События tab. Если есть какой-либо обработчик событий, тогда вам нужно уточнить, изменяет ли оно состояние флажка или нет (сразу после выполнения VBA).

+0

Спасибо за подсказку! Да, он имеет события как для ярлыков, так и для элементов ввода. Тогда мне придется их изучить. Я вернусь и проголосую за это, как необходимый ответ, если эти события станут настоящими преступниками –

Смежные вопросы