728x90

네이버지식인에 srt 자막의 타임코드 오류가 발생한 것을 수정하는 걸 해보고 싶어서 해봤는데 생각외로 오류가 있는 부분 때문에 시간이 많이 걸렸다.


srt 자막정리.xlsm


Japan_modify.srt



Sub CellClear()
    Dim rngC As Range       '// 선택영역 각 셀을 넣을 변수
    Dim rngAll As Range      '// 선택영역 전체 범위 변수
   
    Cells(2, "A").Select
   
    Application.ScreenUpdating = False      '// 화면 업데이트 (일시)정지
    If Cells(Rows.Count, "A") > Cells(Rows.Count, "B") Then
        Range([A1], Cells(Rows.Count, "A").End(3)).Offset(1).EntireRow.Clear
    Else
        Range([B1], Cells(Rows.Count, "B").End(3)).Offset(1).EntireRow.Clear
    End If

    Range([A2], Cells(Rows.Count, "B")).NumberFormat = "@"   '// 텍스트 서식으로

End Sub


Sub 번호매기기()
    Dim rngC As Range
    Dim i As Long
    For Each rngC In Range([A2], Cells(Rows.Count, "A").End(3))
        i = i + 1
        rngC.Offset(0, 2) = i
    Next rngC
End Sub


Sub srt자막수정()
    Dim rngC, rngAll As Range
    Dim v, v1, v2, s1, s2
    Set rngAll = Range([A2], Cells(Rows.Count, "A").End(3))
    For Each rngC In rngAll
        If InStr(rngC, "-->") > 0 Then
            v = Split(rngC, "-->")
            v1 = Split(Trim(v(0)), ":")
            v2 = Split(Trim(v(1)), ":")
           
            If Len(v1(2)) > 5 Then
                Debug.Print "v1 자리수 : " & v1(2) & "  행번호 = " & rngC.Row
                rngC.Offset(, 2).Interior.ColorIndex = 36
            End If
           
            If Len(v2(2)) > 5 Then
                Debug.Print "v2 자리수 : " & v2(2) & "  행번호 = " & rngC.Row
                rngC.Offset(, 2).Interior.ColorIndex = 38
            End If
           
            If InStr(Trim(v1(2)), ",") = 0 Then
                    s1 = Left(v1(2), 2) & "," & Mid(v1(2), 3, 3)
            Else
                s1 = v1(2)
            End If
           
            If InStr(v2(2), ",") = 0 Then
                s2 = Left(v2(2), 2) & "," & Mid(v2(2), 3, 3)
            Else
                s2 = v2(2)
            End If
            rngC.Offset(, 1) = v1(0) & ":" & v1(1) & ":" & s1 & " --> " & v2(0) & ":" & v2(1) & ":" & s2
        Else
            rngC.Offset(, 1) = rngC
        End If
    Next rngC
End Sub


블로그 이미지

Link2Me

,