HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Entdecke rund 2 Millionen Excel-Lösungen im
Forumsarchiv
Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Kaum Excel/VBA-Kenntnisse
schauan
20.06.2026 14:13:40
AW: Sprachausgabe in Excel
... bei mir werden auch mit Deinem Code die Sounds unvollständig wiedergegeben. Ich wollte das jetzt mal aufzeichnen, aber seltsamerweise wurde bei der Aufzeichnung alles vorgelesen. Bei anschließender Wiederholung ohne Aufzeichnung wurde mehr vorgelesen als vor der Aufzeichnung, aber wieder nicht alles ...

Das System friert bei mir nicht ein. Es hat nur einen kurzen "Nachlauf". Abbrechen kann ich im VBA-Editor mit STRG+Pause

Hier mal ein Code, wie er bei mir funktioniert. Ich habe dazu das Sprechen in eine Function ausgelagert. Änderungen was Ersetzungen oder Löschungen im Makro Spielerlisten_Ansage betrifft, erkennt man an der Auskommentierung an erster Position der jeweiligen Zeile. EIn paar Pausen habe ich dadurch auch in die Function ausgelagert. Ob die anderen in der Länge oder überhaupt erforderlich sind, sei dahingestellt. Die 2500ms als breaktime funktionieren bei mir ganz gut und müssen ggf. je nach Gegebenheiten angepasst werden.


Sub Spielerlisten_Ansage()


Dim s As Object
Dim ws As Worksheet
Dim r As Long
Dim nameH As String, nameD As String
Dim countH As Long, countD As Long
Dim herrenVorhanden As Boolean, damenVorhanden As Boolean

Dim sSpeak As String

Set ws = Sheets("Spielerliste")
Set s = CreateObject("SAPI.SpVoice")

s.Speak "", 2
Sprechen ". . . "
Sleep 300

' ===========================
' ===== TURNIERART CHECK ====
' ===========================
nameH = ws.Cells(2, 2).Text ' Herren B2
nameD = ws.Cells(2, 8).Text ' Damen H2

herrenVorhanden = (nameH <> "")
damenVorhanden = (nameD <> "")

If Not herrenVorhanden And Not damenVorhanden Then Sprechen "Es sind keine Spieler gemeldet.": Exit Sub
' s.Speak "Es sind keine Spieler gemeldet."
' Exit Sub
' End If

If Not herrenVorhanden And damenVorhanden Then
' s.Speak "Es wird ein reines Damenturnier gespielt."
sSpeak = "Es wird ein reines Damenturnier gespielt."
' Sleep 400
ElseIf Not damenVorhanden And herrenVorhanden Then
' s.Speak "Es wird ein Herren oder Mixed Turnier gespielt."
sSpeak = "Es wird ein Herren oder Mixed Turnier gespielt."
' Sleep 400
End If

Sprechen sSpeak

' ===========================
' ===== STARTMELDUNG ========
' ===========================
' s.Speak "Achtung! Es werden alle gemeldeten Spieler vorgelesen."
Sprechen "Achtung! Es werden alle gemeldeten Spieler vorgelesen."
Sleep 500

' ===========================
' ===== HERREN VORLESEN =====
' ===========================
If herrenVorhanden Then

If damenVorhanden Then Sprechen "Ich beginne mit den Herren."
' Nur sagen, wenn beide vorhanden
' s.Speak "Ich beginne mit den Herren."
' Sleep 300
' End If

r = 2
nameH = ws.Cells(r, 2).Text

Do While nameH <> ""
' s.Speak nameH
Sprechen nameH
countH = countH + 1
' Sleep 200
r = r + 1
nameH = ws.Cells(r, 2).Text
Loop

' Sleep 400
End If

' ===========================
' ===== DAMEN VORLESEN ======
' ===========================
If damenVorhanden Then

If herrenVorhanden Then
' Nur sagen, wenn beide vorhanden
' s.Speak "Nun folgen die Damen."
Sprechen "Nun folgen die Damen."
Sleep 300
End If

r = 2
nameD = ws.Cells(r, 8).Text

Do While nameD <> ""
' s.Speak nameD
Sprechen nameD
countD = countD + 1
' Sleep 200
r = r + 1
nameD = ws.Cells(r, 8).Text
Loop

Sleep 400
End If

' ===========================
' ===== ABSCHLUSSANSAGE =====
' ===========================
If countH > 0 And countD > 0 Then
' s.Speak "Es sind " & countH & " Herren und " & countD & " Damen gemeldet."
sSpeak = "Es sind " & countH & " Herren und " & countD & " Damen gemeldet."
ElseIf countH > 0 Then
' s.Speak "Es sind " & countH & " Herren gemeldet."
sSpeak = "Es sind " & countH & " Herren gemeldet."
ElseIf countD > 0 Then
' s.Speak "Es sind " & countD & " Damen gemeldet."
sSpeak = "Es sind " & countD & " Damen gemeldet."
End If
Sprechen sSpeak

End Sub


Private Function Sprechen(ByVal sText As String)
Static spr As Object
Const SVSFIsXML As Long = 8
If spr Is Nothing Then
Set spr = CreateObject("SAPI.SpVoice")
End If
sText = "" & _
"" & sText & _
"
"
spr.Speak sText, 8
DoEvents
Sleep 200
End Function

Als Antwort auf diesen Beitrag
Udo
20.06.2026 07:42:34
AW: Sprachausgabe in Excel
Ich muss mich entschuldigen, durch die viele herumprobiererei hab ich windows sound ausgeschaltet gehabt.
Es sprechen alle codes von euch,leider wird bei allen immer was verschluckt und abbrechen funktioniert auch nicht.
die codes was ich gesendet habe verschlucken nichts aber sie frieren mir mein excel ein und keine chance abbzubrechen vielleicht könntet wer die lösung finden.
Danke LG
Folgenachrichten
Antwort auf Beitrag erstellen
Bitte einen Anwendernamen ohne @ eingeben.
Bitte das Passwort eingeben.
Bitte eine gültige E-Mail-Adresse eingeben.
Bitte einen Betreff eingeben.
Weitere Optionen
Aktivieren, wenn die Frage/der Beitrag noch nicht beantwortet wurde und unter Listen > Offene Threads erscheinen soll.
Beispieldatei hochladen

Bitte einen Nachrichtentext eingeben.