使用VBA通过提交表单来操作IE(textarea字段有问题)

时间:2016-07-18 14:46:32

标签: html excel forms vba internet-explorer

Hello StackOverflow社区,

我有一个关于使用VBA来操纵IE的问题。

代码是关于以网站形式插入数据。到目前为止,一切都很顺利,除了以下“textarea”字段:

<textarea cols="1" rows="1" id="id_content" name="name_content" class="htmleditor">Content of the textarea is displayed here</textarea>

除了实际字段(来自上面提到的textarea类型)之外,还有一些来自类型按钮的元素,这些元素包含在htmleditor中。

我想要做的就是更改文本字段中的文本。因此,我希望能够写出不同的内容,而不是“在这里显示textarea的内容”。如果可能,也可以更改格式,例如一些部分粗体等。然后提交表格。

到目前为止我使用的代码:

Dim IEApp As SHDocVw.InternetExplorer
Set IEApp = New SHDocVw.InternetExplorer

Dim htmlDocument As htmlDocument
Dim objNotes As Object
Dim strNotes As String

With IEApp
    IEApp.Visible = True
    IEApp.Navigate "..."
    Do: Loop Until IEApp.Busy = False
    Do: Loop Until IEApp.document.ReadyState = "complete"
End With

Set objNotes = IEApp.document.getElementsByName("name_content")(0)

MsgBox objNotes.innerText ' 1)
MsgBox objNotes.innerHTML ' 2)
MsgBox objNotes.outerHTML ' 3)
MsgBox objNotes.Value ' 4)

objNotes.Value = "Hello World" 'Here I want to change the text in the textfield

MsgBox objNotes.innerText ' 5)
MsgBox objNotes.innerHTML ' 6)
MsgBox objNotes.outerHTML ' 7)
MsgBox objNotes.Value ' 8)

IEApp.document.forms(0).submit

MsgBox命令提供以下内容

1) <p>Content of the textarea is displayed here</p>
2) &lt;p&gt;Content of the textarea is displayed here&lt;/p&gt;
3) <textarea name="name_content" class="htmleditor" id="id_content" aria-hidden="true" style="display: none;" rows="1" cols="1">&lt;p&gt;Content of the textarea is displayed here&lt;/p&gt;</textarea>
4) <p>Content of the textarea is displayed here</p>

5) <p>Hello World</p>
6) &lt;p&gt;Hello World&lt;/p&gt;
7) <textarea name="name_content" class="htmleditor" id="id_content" aria-hidden="true" style="display: none;" rows="1" cols="1">&lt;p&gt;Hello World&lt;/p&gt;</textarea>
8) <p>Hello World</p>

但在成功提交表单后,页面不会更改。

到目前为止我尝试了什么:

  • getElementByID而不是getElementsbyName
  • 通过遍历网站的所有元素并直接引用它来搜索此元素
  • 更改innerText,innerHTML,outerHTML,value
  • 的值
  • 因为aria-Hidden = True试图通过VBA改变这个但我找不到合适的方式
  • 将一个新的textArea变量定义为Object / HTMLTextAreaElement / HTMLRichtextElement / HTMLInputTextElement / HTMLAreaElement并通过它更改值,但没有任何数据类型影响它
  • 将公式设置为活动,重点关注但无法使用SendKeys函数以这种方式编写文本

知道还能做些什么吗?

1 个答案:

答案 0 :(得分:0)

对于TextArea,不使用byid或byname,而是使用byTagName 我相信你必须使用函数 getElementsbyTagName