java,python等语言对于rft的处理很受限,rtf提供了很少的api供外部调用处理,但是对于docx我们却又很多api来处理,所以很多人会有需求将rtf批量转为docx的需求,接下来就来说说解决方案

查询资料可知,rtf格式文件可以被word打开,同时还可以被另存为docx格式文件;

所以我们想如何才能通过脚本的方式来执行这样一个另存为的操作呢,word中的“宏”就可以解决这样的问题,可以编写脚本执行另存为,具体宏相关知识自行百度;

好了,脚本方式执行另存为达到批量转化rtf到docx的目的,接下来就是会考虑如果触发这个宏的运行,我们可以alt+f11进入vb编辑页面插入module,编写word打开的事件触发。触发事件的脚本,批量rft转为docx的宏脚本如下

rtfToDocx

Sub rtfToDocx()
Dim sEveryFile As String
Dim sBasePath As String
Dim sSourcePath As String
Dim sNewSavePath As String
Dim sDestPath As String
Dim CurDoc As Object
sBasePath = "C:\Users\wangj01052\Desktop\tools\"
sSourcePath = sBasePath & "rtf\"
sDestPath = sBasePath & "docx\"
sEveryFile = Dir(sSourcePath & "*.Rtf")
Do While sEveryFile <> ""
Set CurDoc = Documents.Open(sSourcePath & sEveryFile, , , , , , , , , , , msoFalse)
sNewSavePath = VBA.Strings.Replace(sDestPath & sEveryFile, ".Rtf", ".docx")
CurDoc.SaveAs2 sNewSavePath, wdFormatDocumentDefault
CurDoc.Close SaveChanges:=False
sEveryFile = Dir
Loop
Set CurDoc = Nothing
End Sub

AutoOpen

Sub AutoOpen()

Call rtfToDocx

End Sub

这些操作完后在每次打开这个工具word后就会触发转化操作;

之后你可能还会想如果这个转为工作能做个计划任务就好了,此时就可以考虑用window的计划任务了,计划任务如何配置可以自行百度,现在关键的地方在于如果通过能被window执行的脚本启动word触发宏事件转化操作,我们这里可以用bat批量cmd脚本方式,具体脚本如下

start winword.exe tool.doc

到这里,批量定时任务将rtf文件转为docx的工作就完成了!

05-11 15:24