Wo liegt hier der Fehler (VB-Skript)?
Ich habe versucht da so ein Programm in VBS zu coden aber mir ist da irgendein Fehler unterlaufen. Kann mir da wer helfen diesen Fehler zu beheben? Das Programm soll einen Satz sagen (mit Stimme), ein Fenster öffnen wo man eine Website eingibt und diese dann öffnen. Hier ist der Code:
set STIMME=createobject("sapi.voice")
STIMME.speak("Bitte nenne den Namen der Website die du öffnen willst!")
WEBSITE=inputbox("Nenne den Namen der Website","website")
set WSITE=createobject("wscript.shell")
DO
If Website = "" Then
STIMME.speak("Website nicht gefunden. Bitte versuche es erneut!")
WEBSITE=inputbox("Nenne den Namen der Website","website")
Else
STIMME.speak("Loading " & WEBSITE & ".com")
set WSITE=createobject("wscript.shell")
WSITE.run "http://www. " & WEBSITE & ".com")
STIMME.speak("Website wurde geladen!")
exit do
Loop
Ergänzung 1: Alles läuft natürlich auf Windows 10
Ergänzung 2: Die Sachen die die Stimme sagen soll sind auf Deutsch, weil mein PC so etwas auch immer Deutsch ausspricht.
...
2 Antworten
Sagen wir's mal so:
Mehr Fehler ging fast nicht. (und noch dazu die Augenvergewaltigung: Variablen in Großbuchstaben geht garnich🤮 )
- Objekte werden nur einmal an eine Variable zugewiesen.
- Die Sprachbibliothek heißt SAPI.SpVoice
- do-Loop ohne Bedingung
- kein End If
- fehlende oder zu viel Klammern
Und der Generalfehler: Du gibst Dich mit einer Sprache ab, welch eigentlich nur noch aus "Gnade" im System ist! (VBS ist schon seit jahren auf der Abschussliste und wird nicht mehr suported.
Immerhin kannst Du die Logik auch noch in anderen Sprachen verwenden 😅
trotzdem dein Script:
'verwendete Objekte nur einmal initialisieren!
set Shell=createobject("WScript.Shell")
set Stimme=createobject("SAPI.SpVoice")
Do
'kleiner Trick, das die Eingabe nicht wartet, bis die Tante fertig gelabert hat (speak asynchron)
Stimme.speak "Bitte nenne den Namen der Website die du öffnen willst!",1
WebSite=inputbox("Nenne den Namen der Website","website")
If Website = "" Then
Stimme.speak "Website nicht gefunden. Bitte versuche es erneut!" ,1
WebSite=inputbox("Nenne den Namen der Website","website")
Else
Stimme.speak "Lade " & WebSite ,1
Shell.run "http://" & WebSite
Stimme.speak "Website wurde geladen!" ,1
End If
Loop Until MsgBox("Script Beenden?", vbYesNo+vbSystemModal, WScript.ScriptName) = 6
Ich kenne mich zwar nicht mit VB nicht sonderlich gut aus, ich hab aber nach kurzem googeln festgestellt, dass die Leute in den Foren "SAPI.spvoice" in den String tun, wo sie das Objekt erstellen. Ich würde mal schätzen, Groß- und Kleinschreibung ist auch wichtig, vor allem, wenn man mit Strings arbeitet, außer natürlich, VB macht das anders, was ich mal nicht vermute. (Ach ja, nichts gegen dich, aber dein Skript da ist etwas nutzlos, wenn ich nur ".com"-Seiten öffnen kann xD. Vor allem, wenn das ganze auf Deutsch ist, schließlich ist ".de" die deutsche Domainendung. Und es würde nicht funktionieren, da du in der Zeile "WSITE.run "http://www. " & WEBSITE & ".com")" einen Abstand nach "www." gesetzt hast. Das würde der Browser nicht erkennen und er würde dir immer "Server nicht gefunden" anzeigen.
Ich hab mich mal damit beschäftigt und einfach mal was funktionierendes hingeklatscht. Wenn du willst, kannst dus mal vergleichen. Habs auch etwas übersichtlicher gemacht, sodass man nicht immer so komisch leere Zeilen zählen muss. Dein Fehlercode will dir übrigens sagen, dass du in Klammern nach einem Komma einen Abstand setzen musst, also ("text", "text"). Auf solche Tippfehler musst du immer achten. Aber das zu beheben, wird wohl nicht genug sein, dann folgen noch ganz viele weitere Fehler, hier ist einfach mal das fertige Produkt:
set STIMME=createobject("SAPI.spvoice")
STIMME.speak("Bitte nenne den Namen der Website die du öffnen willst!")
bool = false
DO
WEBSITE=inputbox("Nenne den Namen der Website","website")
set WSITE=createobject("wscript.shell")
If Website = "" Then
STIMME.speak("Website nicht gefunden. Bitte versuche es erneut!")
Else
STIMME.speak("Loading " & WEBSITE & ".com")
set WSITE=createobject("wscript.shell")
WSITE.run("http://www." & WEBSITE & ".com")
STIMME.speak("Website wurde geladen!")
bool = true
end if
loop until bool = true
ist zwar nicht optimal gelöst und man kanns auch nicht schließen, bis man hinkriegt, was im Feld einzugeben, aber ich hab jetzt keine Motivation, zu googeln, wie man die inputboxen sinnvoll hinbekommt.
Das Problem ist aber auch, dass ich das ganze nicht mal öffnen kann. Da steht dann nur eine Fehlermeldung.