[[更新:抱歉...我忘记了代码块。已编辑。]]
这是我的一个老师提出的问题,因此我将直接引用他,并以说我不知道VB(这里只是管道)为开头对此进行介绍:
“为了帮助国际学生,我需要将YouTube成绩单和隐藏式字幕转换为可读的文本。
我编写此例程的目的是,通过从Microsoft Word中调用Visual Basic,从Youtube成绩单中消除时间码标记。由于时间码始终位于单独的行上,并且由于时间码必须包含“:”,因此我要搜索字符“:”,然后删除出现该字符的整行。由于某种原因,我编写的例程在完成后会迫使Word进入很长的无响应时间段(大约60-100秒),在此之后它会很好地运行。有什么建议可以避免这种延迟或在Word中解决此问题而无需编写宏吗?”
Sub Deleteyt()
Dim oRng As Word.Range
Dim oRngDelete As Word.Range
Set oRng = ActiveDocument.Range
With oRng.Find
.Text = ":"
While .Execute
oRng.Select
Set oRngDelete = ActiveDocument.Bookmarks("\Line").Range
oRngDelete.Delete
Wend
End With
End Sub
因此代码可以正常工作,前面只是很长的延迟。有什么想法吗?
答案 0 :(得分:0)
为什么不修改包含成绩单的文本文件?我希望您最终得到一个.txt文件。
请参见以下示例,该示例非常受Text file in VBA: Open/Find Replace/SaveAs/Close File
的启发Sub CleanFile()
Dim sBuf As String
Dim sTemp As String
Dim iFileNum As Integer
Dim sFileName As String
' Edit as needed
sFileName = application.GetOpenFilename
iFileNum = FreeFile
Open sFileName For Input As iFileNum
Do Until EOF(iFileNum)
Line Input #iFileNum, sBuf
'If the line does not contain a ':', then include the line in the memory sTemp
if If InStr(sBuf, ":") = 0 Then sTemp = sTemp & sBuf & vbCrLf
Loop
Close iFileNum
iFileNum = FreeFile
sFileName = Application.GetSaveAsFilename()
Open sFileName For Output As iFileNum
Print #iFileNum, sTemp
Close iFileNum
End Sub
答案 1 :(得分:0)
您不需要宏-您所需的只是一个通配符查找/替换,并带有:
Find = <[0-9]@:[0-9]@>*^13
Replace = nothing