Использование VBA для управления IE с отправкой формы (проблема с полем textarea)

html excel forms vba internet-explorer

395 просмотра

1 ответ

11 Репутация автора

Привет сообщество 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.

То, что я хочу сделать точно, это изменить текст в текстовом поле. Таким образом, вместо «Содержимое текстовой области отображается здесь», я хочу иметь возможность написать что-то другое. Если возможно, также измените формат, например, некоторые части выделены жирным шрифтом и т. Д. Затем отправьте форму.

Код, который я использую до сих пор:

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 для написания текста таким образом

Есть идеи, что еще можно сделать?

Автор: Snovna Источник Размещён: 18.07.2016 02:46

Ответы (1)


0 плюса

1 Репутация автора

Для TextArea не используйте byid или byname, но byTagName. Я полагаю, вам нужно использовать функцию getElementsbyTagName.

Автор: William Ribeiro Размещён: 06.05.2018 07:33
Вопросы из категории :
32x32