2017-08-12 28 views
-2

我使用宏來填充Webform。到目前爲止,宏是爲我的目的服務的。 Web表單從Excel正確獲取文本。填充VBA宏時Web表單不驗證

問題出現在窗體填充後.Web窗體不能識別宏插入的文本。 Web表單需要Web窗體中keybord的操作來驗證它不是自動填充的。例如,如果我通過Web窗體中的鍵盤執行任何操作,它會將其視爲文本,因此,從鍵盤輸入空格並刪除它有助於使表單有效。

如何在窗體中使用'刪除'符號?我試了getElementsByTagNamegetElementsByClassname,並用這個去SendKeys返回錯誤。例如,

getElementsByTagName(0).SendKeys"{BACKSPACE}" 

這將返回一個錯誤。

+0

我編輯過相同的,所以你不知道英語不再是一個問題。我看到你的問題的方式是,宏表入口到Web窗體被視爲垃圾郵件,並不允許提交,直到觸發鍵盤操作,你也試圖通過宏來做。您應該提供關於您嘗試填寫哪個網頁表單的其他信息。由於每個Web表單驗證都不相同。 – Oasa

+0

感謝您的幫助:-)網站上的Web表單驗證隨着輸入標記的ClassName的變化而變化。很可能,ClassName會隨着javascript動作而改變。 – footballplayer

+0

這樣做有必要嗎?爲什麼不直接? https://stackoverflow.com/questions/158633/how-can-i-send-an-http-post-request-to-a-server-from-excel-using-vba – jamheadart

回答

0

在使用SendKeys方法之前,您需要確認窗口和按鈕激活是否正確(您也可以使用TAB確保它位於正確的按鈕處),或者您可以使用ActiveDocument.GoTo(wdGoToPage, wdGoToRelative, 0).Select並給予足夠的時間擊鍵或網頁表單進行填充。然後使用SendKeys ("{BACKSPACE}")。您不需要將SendKeysgetElementBysTagName(0)關聯,因爲它不是該對象內的有效方法。只是寫清楚

+0

這是我的HTML代碼:'< input class =「ng-pristine ng-invalid ng-touched」type =「text」data-ng-model =「textbox」>'對於HTML代碼,我使用宏:'Set inputCollection = IE.document.getElementsByTagName(「input 「) 對於每個otext在inputCollection 如果otext .getAttribute(」 數據-NG-模型「)= 」文本框「 接着 otext。價值= 」任何文字「 otext .focus 的SendKeys 」{} BACKSPACE「 End If Next otext' 我認爲,這個Web表單有一個角度驗證。在以這種形式從鍵盤上做任何事之前,ut無效。我嘗試使用'otext.focus'和'SendKeys「{BACKSPACE}」',但它不起作用。 – footballplayer

+0

對不起。我是一名新成員,並且還不知道如何在列中鍵入文本可更改。 – footballplayer

+0

任何人都可以幫助我嗎? – footballplayer