2016-10-12 29 views
0

The exact same issue I haveExcel中VBA的網頁無法識別的字段填寫時,我提交

我已經寫了一個Excel VBA宏一些數據粘貼到AngularJS 形式 - 它會打開一個Internet Explorer( 11)窗口,導航到包含表單的頁面 ,然後抓取文檔樹,查找某些元素的ID,將其值從空白更改爲 非Excel空白字符串。但是,當我提交 表單時,表單邏輯將所有必填字段視爲仍然爲空,如果它們仍爲空,則在假定的違規字段周圍繪製一個紅框。 (I可以通過點擊到每個字段中,在粘貼的數據的末尾鍵入 隨機字符,並立即 刪除它在這一點上介入,並且這觸發了所需的字段被 現在充滿的邏輯。)

此頁從這裏我鏈接是完全相同的問題,我與上面突出顯示的相關部分。剩下的我什麼都沒有。我已經嘗試了關於查找提交的評論中所說的內容,它不起作用,或者我想我只需要糾正VBA代碼以正確提交它。

最好我可以告訴的是,當我手動輸入時,它會驗證字段是否符合標準並將其標記爲好。在填充字段後,如何強制此頁面進行自檢?

這是我試過的。有些東西是我發現的,並試圖
'Call .Document.getelementbyid("firstName").SetAttribute("value", ActiveCell.Value) 'Tried a different way but stayed with my original lines next
Set firstName = .Document.GetElementById("firstName") ‘works
firstName.Value = ActiveCell.Value 'works but then for submit, field says empty

在代碼提交結束,
.Document.InvokeMember ("vm.onSubmit()")
Set HTMLForm = .Document.GetElementsByName("vm.onSubmit()")
HTMLForm.Submit
.Document.getElementsByClassName("btn btn-primary btn-lg btn-next")(0).Click ‘works and goes to next page if the fields was working
.Document.forms(0).submit 'works, just resets the page to previous page

+0

你可以分享網站網址或到目前爲止嘗試過的代碼嗎? –

+0

請將此添加到問題中。 –

回答

0

您需要觸發採集領域的input事件改變。

var inputs = document.getElementsByTagName("input"); 
for (var input in inputs) { 
    var $input = angular.element(input); 
    $input.triggerHandler('input'); 
} 
+0

我在VBA代碼中嘗試了這一點,但無法識別。我認爲這是別的,但我如何觸發輸入事件字段使用或使VBA觸發它們? –

+0

你必須在瀏覽器的JavaScript腳本中執行此操作。但我不知道如何從vba中做到這一點。也許你可以直接觸發事件,避免使用Javascript。 – flob

相關問題