
Tengo un documento que es la transcripción de una entrevista en video. El vídeo en sí tiene código de tiempo SMPTE incorporado, así como código de tiempo grabado (BITC). El código de tiempo SMPTE y BITC corresponden a la hora del día en que se rodó la entrevista, en formato de 24 horas.
En el documento de transcripción, hay marcas de tiempo entre corchetes cada dos minutos, en [hh:mm]
formato. Sin embargo, estas marcas de tiempo de transcripción comienzan a las '00:00'.
¿Existe alguna forma de utilizar una especie de función "Buscar y reemplazar" para revisar el documento, encontrar todas las instancias hh:mm
y agregar una hora fija a esas marcas de tiempo, reflejando así la hora del día y coincidiendo con el código de tiempo SMPTE?
La solución perfecta sería una herramienta que:
- Encuentra todas las marcas de tiempo en
[hh:mm]
formato - Agrega la hora de inicio de la entrevista, "yy:yy" en formato de 24 horas a todas esas marcas de tiempo originales, "xx:xx".
- Reemplaza las marcas de tiempo con la nueva marca de tiempo corregida, "zz:zz", que sería igual a xx:xx+yy:yy.
Entonces, por ejemplo, si mi entrevista comenzara a las 9:30 de la mañana, cada marca de tiempo se reemplazaría de la siguiente manera:
- 00:00 + 9:30 = 9:30
- 00:02 + 9:30 = 9:32
- 00:04 + 9:30 = 9:34
- Etc.
Respuesta1
Dudo que esta sea la mejor manera de hacerlo, pero aquí hay una solución. Obviamente no está muy pulido ya que no estoy seguro de cómo destinará su incremento de tiempo o si los datos son solo un párrafo en una celda, pero debería llevarlo hasta allí.
Divide el valor de la celda activa en una matriz buscando "[", luego ajustó los primeros 2 caracteres por paso de hora y los caracteres 4 y 5 por paso de minuto y luego lo vuelve a juntar todo.
Además, esto funciona en activecell, lo cual no es una muy buena práctica de codificación.
Sub update_times()
Dim sParts() As String
Dim input_text As String
Dim output_text As String
Dim split_on As String
Dim hours_add As Integer
Dim minutes_add As Integer
Dim hours_final As Integer
Dim minutes_final As Integer
split_on = "["
hours_add = 9
minutes_add = 30
input_text = ActiveCell.Value
sParts = Split(input_text, split_on)
output_text = sParts(0)
For i = 1 To UBound(sParts)
hours_final = Left(sParts(i), 2) + hours_add
minutes_final = Mid(sParts(i), 4, 2) + minutes_add
'checks to wrap data
If minutes_final > 59 Then
hours_final = hours_final + 1
minutes_final = minutes_final - 60
End If
If hours_final > 23 Then
hours_final = hours_final - 24
End If
'put the part back together with the new hour and minutes
sParts(i) = "[" & Format(hours_final, "00") & ":" & Format(minutes_final, "00") & Right(sParts(i), Len(sParts(i)) - 5)
'add the part to the final string
output_text = output_text & sParts(i)
Next
ActiveCell.Value = output_text
End Sub