Capturar tiempo de WMP incrustado en Excel actualizado por segundo.

A tod@s!

Estoy haciendo mi primer proyecto y soy un poco novata, agradecería mucho cualquier ayuda. He conseguido resolver muchas dudas a través de este foro, pero estoy atascada con esta.

¿Sería posible capturar el tiempo transcurrido del vídeo en el reproductor WMP incrustado en una hoja de Ecel? (No se si podrían utilizarse los comandos de WindowsMediaPlayer.currentMedia...). Y si es posible, ¿podría pegar ese valor en una celda y que se actualice cada segundo?

2 respuestas

Respuesta
2

He conseguido que funciones de esta manera no se si es muy elegante, enlazándola a un timer... Me surge otra cuestión. ¿Podría utilizar el valor de la celda que tengo asignada al timer ("Q2") para indicar en qué momento quiero que inicie el vídeo en el reproductor? (Por ejemplo si quiero que el timer empiece en el 00:07:55, que el vídeo también empiece en ese mismo minuto ) No se si lo he explicado claramente. Gracias!

Option Explicit
Public sTimer As Boolean
Sub Start_Timer()
        Application.OnTime Now + TimeValue("00:00:01"), "IncreamentTimer"
End Sub

Sub IncreamentTimer()
        Sheets("CONSOLA").Range("Q2").Value = Sheets("CONSOLA").Range("Q2").Value + TimeValue("00:00:01")
        sTimer = True
        Start_Timer
End Sub

Sub PauseResume_Timer()
        If Sheets("CONSOLA").Range("Q2").Value <> "" Then
                If sTimer = True Then
                        sTimer = False
                        Sheets("CONSOLA").WindowsMediaPlayer1.Controls.PAUSE
                        Application.OnTime Now + TimeValue("00:00:01"), "IncreamentTimer", schedule:=False
                Else
                        Sheets("CONSOLA").WindowsMediaPlayer1.Controls.PLAY
                        Application.OnTime Now + TimeValue("00:00:01"), "IncreamentTimer"
                End If
        End If
End Sub

Respuesta
1

Hol.a

Es correcto usar "OnTime" pero si te has percatado, más que el tiempo de la canción que reproduces, lo que estás haciendo es aumentar segundo a segundo una celda.

Te recomiendo hacerlo así, primero, en el módulo de la hoja en donde tienes el objeto WMP coloca esto:

Private Sub WindowsMediaPlayer1_PlayStateChange(ByVal NewState As Long)
If WindowsMediaPlayer1.playState = 1 Then
    Call DetenerIntervalo
    Exit Sub
End If
If WindowsMediaPlayer1.playState = 3 Then
    Call IntervalodeTiempo
    Exit Sub
End If
End Sub

No olvides reemplazar el nombre del objeto WMP si el tuyo es otro. Luego  en un módulo "standard" coloca esto:

Sub IntervalodeTiempo()
Application.OnTime Now + TimeValue("00:00:01"), "TiempoenCelda"
End Sub
Sub TiempoenCelda()
Dim TiempoCancion As Long
Let TiempoCancion = Worksheets("Hoja1").WindowsMediaPlayer1.Controls.currentPosition
Range("A17") = Format(TiempoCancion / (86400), "hh:mm:ss")
Call IntervalodeTiempo
End Sub
Sub DetenerIntervalo()
Application.OnTime EarliestTime:=Now + TimeValue("00:00:01"), _
 Procedure:="TiempoenCelda", Schedule:=False
End Sub

Del mismo modo no olvides reemplazar el nombre de la hoja y el objeto WMP según los tuyo.

Todo eso hará que sin necesidad de presionar/activar nada, al poner "Play" en el objeto WMP, automáticamente en la celda "A17" se verá el tiempo transcurrido del audio/video y cuando se presione "Stop" se detendrá.

Comentas

Abraham Valencia

¡Gracias Abraham! Era exactamente lo que necesitaba. Tienes razón, muchísimo mejor tu opción ya que me permite captar el tiempo aunque reproduzca el vídeo a diferentes velocidades. Me salvaste de muchas horas malgastadas y muchos dolores de cabeza. Gracias de nuevo.

Excelente :)

Un abrazo

Abraham Valencia

La pregunta no admite más respuestas

Más respuestas relacionadas