Text = WScript.Arguments(0)
Speaker = WScript.Arguments(1)
Volume = WScript.Argume


Text = WScript.Arguments(0)
Speaker = WScript.Arguments(1)
Volume = WScript.Argume


以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
错误含义: “800a0009下标越界”是一个常见的 VBScript 错误,表示在访问数组或集合时,使用了无效的索引。在 VBScript 中,数组索引通常从 0 开始,如果尝试访问一个不存在的索引,就会触发这个错误。
错误原因:
解决方案:
从你提供的两张图片中,可以看到以下代码:
Text = WScript.Arguments(0)
Speaker = WScript.Arguments(1)
Volume = WScript.Arguments(2)
Set s = CreateObject("SAPI.SpVoice")
s.Volume = Volume
For Each Voice In s.GetVoices
I = I + 1
If InStr(Voice.GetDescription, Speaker) > 0 Then
Set s.Voice = s.GetVoices.Item(I-1)
Exit For
End If
Next
s.Speak Text
问题分析:
Text = WScript.Arguments(0) 正确地获取了第一个参数。Speaker = WScript.Arguments(1) 正确地获取了第二个参数。Volume = WScript.Arguments(2) 这里存在问题。如果只传递了两个参数,而没有传递第三个参数,这行代码会引发“下标越界”错误。解决方案:
WScript.Arguments 之前,检查是否有足够的参数。Volume 指定一个默认值。Text = WScript.Arguments(0)
Speaker = WScript.Arguments(1)
If WScript.Arguments.Count > 2 Then
Volume = WScript.Arguments(2)
Else
Volume = 50 ' 假设默认音量为 50
End If
Set s = CreateObject("SAPI.SpVoice")
s.Volume = Volume
For Each Voice In s.GetVoices
I = I + 1
If InStr(Voice.GetDescription, Speaker) > 0 Then
Set s.Voice = s.GetVoices.Item(I-1)
Exit For
End If
Next
s.Speak Text
注意事项:
For Each 循环时,初始化变量 I 是必要的,否则会引发其他错误。通过这些修改,你的脚本应该能够正确处理参数,并避免“800a0009下标越界”错误。