我正在使用VBA中的AWS Polly进行实验,我想更改默认文本“嗨!我的名字是Salli。我会读到你在这里输入的任何文字。” “这是一个测试信息。”然后Salli读了它。我可以编写代码来更改文本,但Salli总是读取相同的默认文本。 textarea框下剩余计数器的字符数也没有更新。
这是我的代码。
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application")
'navigate to aws polly site
With objIE
.Top = 0
.Left = 0
.Width = 800
.Height = 600
.Visible = True
End With
objIE.navigate ("https://us-east-2.console.aws.amazon.com/polly/home/SynthesizeSpeech")
Do
DoEvents
If Err.Number <> 0 Then
objIE.Quit
Set objIE = Nothing
GoTo the_start:
End If
Loop Until objIE.readyState = 4
Dim polly As HTMLDocument
Dim narrative As HTMLLIElement
Dim btnReadText As HTMLButtonElement
Set polly = objIE.document
Set narrative = polly.getElementById("awsui-textarea-0")
Set btnReadText = polly.getElementsByClassName("parrot-player-button full-width-button awsui-button awsui-button-size-normal awsui-button-variant-primary awsui-hover-child-icons")(0)
narrative.Focus
narrative.innerHTML = "This is a new test message."
MsgBox narrative.innerHTML
btnReadText.Click
此代码段执行时没有错误,但Salli总是说同样的事情。
答案 0 :(得分:0)
我在网上的其他地方找到了这个答案。问题是输入更改事件未被触发。要执行此操作,请首先将焦点设置在textarea上,然后在更改文本后,将焦点更改为其他位置。当焦点发生变化时,事件将触发,页面将检查新输入,计算剩余字符并说出更改后的文本。在上面的代码中,更改行:
MsgBox narrative.innerHTML
阅读
btnReadText.Focus
这将消除消息框,并在点击之前关注提交按钮来替换它。