Wo liegt hier der Fehler (VB-Skript)?


11.05.2021, 08:45

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.


11.05.2021, 09:08

...

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

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
Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

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.


Banana1008 
Beitragsersteller
 11.05.2021, 09:08

Das Problem ist aber auch, dass ich das ganze nicht mal öffnen kann. Da steht dann nur eine Fehlermeldung.

TehGreatSoldeir  11.05.2021, 10:26
@Banana1008

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.