ubichupas.net

DVDの字幕ファイルをExcelで作成するマクロ

写真のスライドショーを収録したDVD-Rを焼くとき、説明文などを字幕として収録すればON/OFFできて便利じゃないかと気が付いた。 調べてみると字幕ファイル(.srt)は時刻と文章を並べただけのテキストエディタで作れる単純なものだった。 しかしVOBファイルをVLC Media Playerで再生しながらタイミングを調整していく作業は思ったより面倒で、どうにか楽にならないものかと考えた末、Excelで編集することにした。

改行が減った分だけ見通しが良くなったと思う。 さらに条件付き書式なども使えば時刻が前後してしまうミスも防げるだろう。

(σ・∀・)σ[字幕ファイル.xlsm]

ButtonをクリックするとTextBoxに吐き出してコピペするマクロを作った。 マクロからファイルに直接出力するのが好きじゃないので、いつもこの方式にしている。

UserForm1
Private Sub CommandButton1_Click()
    Dim i As Long
    Dim s As String
    
    TextBox1.Text = ""
    Application.ScreenUpdating = False
    i = 1
    Do While Cells(i, 1) <> ""
        s = i & vbCrLf & _
            Format(Cells(i, 1), "hh:mm:ss") & "," & Format(Cells(i, 2), "000") & " --> " & _
            Format(Cells(i, 3), "hh:mm:ss") & "," & Format(Cells(i, 4), "000") & vbCrLf & _
            Cells(i, 5) & vbCrLf & vbCrLf
        
        TextBox1.Text = TextBox1.Text & s
        i = i + 1
    Loop
    Application.ScreenUpdating = True
    
    Dim CB As New DataObject
    With CB
        .SetText (TextBox1.Text)
        .PutInClipboard
    End With
End Sub

そしてマクロの起動方法もよく忘れるので、ウィンドウサイズを変更したときにUserFormを表示するように仕込んでおいた。 ショートカットキーだとAlt+F11がVisual Basic Editorの起動、Alt+F8がマクロの表示となる。 初期設定では開発タブが隠されているので、リボンのユーザー設定から追加する。

ThisWorkbook
Private Sub Set_Form()
    With UserForm1
        .StartUpPosition = 0
        .Top = Application.Top + .Height
        .Left = Application.Left + Application.Width - .Width
        If False = .Visible Then
            .Show (vbModeless)
        End If
    End With
End Sub

Private Sub Workbook_Open()
    Set_Form
End Sub

Private Sub Workbook_WindowResize(ByVal Wn As Excel.Window)
    Set_Form
End Sub


今回オーサリングにDVDStylerを使用したが、字幕ファイルの文字コードはShift-JISで問題なさそうだ。 日本語フォントを設定するのを忘れずに。 DVDメニューは上手く再生できなかった。 (´・ω・`)ショボーン

0 件のコメント: