Hacer hablar cada MsgBox VBA Access

Quisiera su valiosa ayuda, respecto a como hacer para que cada vez que salga un MsgBox, simultáneamente el programa Access narre lo que esta escrito en la caja.

Respuesta
3

Con permiso de Sveinbjorn, una pequeña aclaración (sin haberlo deseado me ha salido un pareado) xDD

El ejemplo inicial que di en Facebook utilizaba, para no tener que complicarse la existencia con registro de referencias, la sistemática del "late binding". ¿Qué implica eso? Que el método speech funciona SIN argumentos.

Dicho de otra manera, que la línea

OSpeech. Speak miFrase, SVSFlagsAsync

funcionará siempre y cuando la dejemos en oSpeech. Speak miFrase

Desde el momento que utilizamos argumentos del método, en este caso SVSFlagsAsync, esos argumentos solo son reconocidos si tenemos registrada la librería correspondiente. En ese caso mejor utilizar el "early binding" y, lógicamente con la librería registrada (que, por si a alguien le interesa, es la "Microsoft Speech Object Library"), la línea de código antes mencionada no nos dará error.

1 respuesta más de otro experto

Respuesta
2

La forma más simple, sugerencia de Neckkito en el grupo de Access de Facebook:

Dim oSpeech as Object
Dim miFrase as String
Set oSpeech = CreateObject("SAPI.SpVoice")
miFrase="Esta es una prueba de hacer hablar a Access"
oSpeech.Speak miFrase, SVSFlagsAsync
MsgBox miFrase
Set oSpeech=Nothing

Un saludo


Neckkito tiene toda la razón, fallo mío por probar el código en una BD en que sí tenía registrada la librería...

Si registras la librería mencionada ("Microsoft Speech Object Library"), el código que puedes usar, con la ventaja del Intellisense sería:

Dim oSpeech as SpeechLib.SpVoice
Dim miFrase as String
Set oSpeech = New SpVoice
miFrase="Esta es una prueba de hacer hablar a Access"
oSpeech.Speak miFrase, SVSFlagsAsync
MsgBox miFrase
Set oSpeech=Nothing

Mil gracias a ambos,

Esto funciona de maravilla y en simultáneo tal como lo deseaba, es decir salta la voz al mismo tiempo que sale el MsgBox.

Si no fuera mucho el abuso, y perdonad; hay alguna manera de hacerlo una única vez y solo hacer mención de alguna variable para cada MsgBox o por cada vez que lo necesite debo transcribir todo el código nuevamente.  Se podría pasar esto a una Sub Pública??

Puedes hacerlo de las dos formas, no veo ningún inconveniente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas