Excel 写了一个SRT编辑小工具
文章目录
公司里要翻译一点油管上的视频,出于辛苦一小时,节约10分钟的原则,我想着是不是做个什么小工具来让翻译工作简单点。
现在的情况是:
1. 用Video Download helper (Firefox 版的) 还是可以从油管上下视频的
2. 可以用 直接下载到字幕文件,原来有配套字幕的和油管自动字幕都能下
3. 需要把原来的字幕翻译成中文做个新字幕
所以要做的工作很简单,把字幕翻译好,对照时间轴贴回去,重新生成新的字幕文件就好。
那么就用Excel做吧,挺简单的一个事。
把字幕文件打开读入Excel,逐句手动翻译之后套用原来的时间轴再转换成字幕文件。
读SRT文件的话用Open file for input 就行了,然后直接按行导入:
Sub Import()
Dim FileName As Variant
Dim sFileName, s1 As String
Dim sPathName As String
Dim aFile As Variant
Dim ws As Worksheet
Dim A
Dim i, j, FirstCell As Double
Set ws = Worksheets("Sheet1")
ws.Range("A1:C100000").ClearContents
Application.ScreenUpdating = False
MsgBox "Please choose srt file"
FileName = Application.GetOpenFilename("Text Files (*.srt), *.srt")
If FileName <> False Then
Open FileName For Input As #1
j = 1
Do While Not EOF(1)
Line Input #1, s1
If s1 <> "" Then
ws.Cells(j, 1) = s1
End If
j = j + 1
Loop
Close #1
Application.ScreenUpdating = True
MsgBox "SRT uploaded"
End If
End Sub
然后正好在下面空行处翻译,然后导出就可以了
Sub Export()
Dim FileName As String
Dim s1 As Worksheet
Set s1 = ThisWorkbook.Sheets("sheet1")
i = 1
FileName = Application.GetSaveAsFilename(InitialFileName:=vbNullString, FileFilter:="Text Files (*.srt),*.srt")
Open FileName For Output As #1
Do While s1.Range("A" & i) <> ""
Write #1, Val(s1.Range("A" & i))
Print #1, s1.Range("A" & i + 1)
Print #1, s1.Range("A" & i + 3)
Write #1,
i = i + 4
Loop
Close #1
MsgBox "SRT Exported"
End Sub
然后想想,还可以加一个功能的,把所有的句子先串联一下,合成一个段落可以方便扔进翻译工具里面翻译个大概做参考:
Sub Combine()
Dim AllTxt As String
Dim s1 As Worksheet
Set s1 = ThisWorkbook.Sheets("sheet1")
i = 1
s1.Range("N7").ClearContents
Do While s1.Range("A" & i) <> ""
AllTxt = AllTxt + s1.Range("A" & i + 2).Value + " "
i = i + 4
Loop
s1.Range("N7") = AllTxt
MsgBox "All text get together now"
End Sub
这样一来就完成了,实际操作起来还是挺方便的。

