我正在尝试使用VBA填写ServiceNow票务工具中的文本区域
到目前为止,我已经成功地使用了这种方法和这个确切的代码(不包括网站的标题和文本区域ID)来在不同的票证工具中填写文本区域,但是在ServiceNow中,由于某种原因它什么也没做。
它似乎确实可以很好地连接到页面,因为我可以在标题上获得返回值(使用VBA打开新的IE实例并对其进行挂钩也无济于事),但是在尝试将值设置为文本区域(描述字段,或与此相关的任何其他文本区域),它不会通过+发送任何文本,也不会为网页上的任何其他ID返回任何值。
我尝试以几种不同的方式来执行此操作,例如使用.innerHTML,.Value和.text,但似乎没有一个发送或返回任何值,将其设置为对象,并使用纯IE.document.getElementById( “ incident.comments”)。value =“ test”,但无砧座。
任何有关我可能在做错事情的指针将不胜感激。
Sub Test()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
marker = 0
Set objShell = CreateObject("Shell.Application")
IE_count = objShell.Windows.Count
For X = 0 To (IE_count - 1)
On Error Resume Next
my_url = objShell.Windows(X).document.Location
my_title = objShell.Windows(X).document.Title
If my_title Like "INC0010005" & "*" Then
Set IE = objShell.Windows(X)
marker = 1
Exit For
Else
End If
Next
If marker = 0 Then
MsgBox ("Website not found")
Exit Sub
End If
'trying to send "test" text into the field, nothing comes up
Set notesObj = IE.document.getElementById("incident.comments")
notesObj.Value = "test"
tests = IE.document.getElementById("incident.comments").innerHTML
'testing for return value (comes up as empty message box each time)
MsgBox (tests)
Set evt = IE.document.createEvent("keyboardevent")
evt.initEvent "change", True, False
notesObj.dispatchEvent evt
End Sub
以及说明的文本区号:
<textarea name="incident.comments" class="form-control" id="incident.comments" aria-required="false" style="height: 64px; overflow: hidden; -ms-overflow-y: hidden; -ms-word-wrap: break-word;" spellcheck="true" onkeydown="multiKeyDown(this);;" onkeyup="multiModified(this);fieldTyped(this);" onkeypress="" onfocus="this.isFocused=true;" onblur="this.isFocused=false;" onchange="this.isFocused=false;multiModified(this)" wrap="soft" autocomplete="off" data-type="glide_journal_input" data-ref="incident.comments" data-charlimit="false" data-length="4000"></textarea>