2015-03-09 6 views
0

Я уже закодировал VBA в IE 11 и смог решить проблемы, но на этом я все время получаю сообщение об ошибке 91 или ошибке 424. Хотя иногда он работает отлично.VBA IE 11 Runtime

К сожалению, я не могу предоставить точный сайт, так как он защищен паролем, но я включаю в себя соответствующий исходный код.

Я делаю выбор явно, поэтому не должно быть никаких проблем с моими переменными.

Это все разные способы, которыми я пытался заполнить поле со вчерашней датой, и никто из них не работает.

html.getElementById("begin")(1).Value = Format(Date - 1, "mm/dd/yyyy") '<-error 91 

Set StartDate = html.getElementById("begin") ‘<- Error 424 or Erorr 80010108 
Set EndDate = html.getElementById("end") 
Set CampaignID = html.getElementById("campaign_id") 

Это 4 разных вещи, которые я пытаюсь, но они все работают периодически.

StartDate.Item(0).Value = Format(Date - 1, "mm/dd/yyyy") ‘<-Error 91 
StartDate.Value = Format(Date - 1, "mm/dd/yyyy") 
StartDate.Value(0) = Format(Date - 1, "mm/dd/yyyy") 
Set StartDate(0).Value = Format(Date - 1, "mm/dd/yyyy 

Исходный код:

<div class="row form-group"> 
<div class="col-xs-12"> 
     <div class="row"> 
      <div class="pull-left text-left" style="width:115px;margin-left:20px"> 
       <label for="">From :</label> 
      </div> 
      div class="col-xs-3"> 
      <input type="text" name="begin" value="" class="form-control input-sm datepicker" id="begin" /> 
      </div> 
      <div class="col-xs-1 text-right"> 
       <label for="">To :</label> 
      </div> 
      <div class="col-xs-3"> 
      <input type="text" name="end" value="" class="form-control input-sm datepicker" id="end" /> 
      </div> 
     </div> 
    </div> 
</div> 
+0

Является ли этот VBA в другом хосте (например, Word/Excel/etc) или VBScript, выполняющемся внутри блока '' внутри самого HTML? – Dai

+0

'getElementById()' возвращает один элемент, поэтому не пытайтесь обрабатывать возвращаемое значение, например, коллекцию. 'Set StartDate = html.getElementById (" begin ")' должен работать, предполагая, что страница полностью загружена и завершена, и что 'html' представляет объект Document. Это может помочь показать немного больше вашего кода, включая соответствующие объявления переменных. –

+0

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

ответ

0

Я понял это.

Я обновлял страницу после входа. Это сбросило разрешения и блокировало меня от изменения каких-либо текстовых полей. Не знаю, почему, но это была половина проблемы.

Затем я изменил переменные редактирования для запуска через весь список «входной» с на странице, как показано ниже:

Dim CampaignId, StartDate, EndDate, RunReport As Object 

    Set StartDate = appIE.Document.getelementbyid("begin") 
    Set EndDate = appIE.Document.getelementbyid("end") 
    Set CampaignId = appIE.Document.getelementbyid("campaign_id") 
    Set RunReport = appIE.Document.getElementsByName("_action_report") 

    ButtonNum = 0 
    Set objCollection = appIE.Document.getElementsByTagName("input") 
    While ButtonNum < objCollection.Length 
     If objCollection(ButtonNum).Name = "begin" Or _ 
     objCollection(ButtonNum).Name = "end" Then 
      Set objElement = objCollection(ButtonNum) 
      objCollection(ButtonNum).Value = Format(Date - 1, "mm/dd/yyyy") 
     End If 
     ButtonNum = ButtonNum + 1 
    Wend 

Этот способ нашел кнопки на странице, где getElementById не удалось.

Спасибо, что посмотрели!