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 SubView Code
AutoOpen
Sub AutoOpen() Call rtfToDocx End SubView Code
这些操作完后在每次打开这个工具word后就会触发转化操作;
之后你可能还会想如果这个转为工作能做个计划任务就好了,此时就可以考虑用window的计划任务了,计划任务如何配置可以自行百度,现在关键的地方在于如果通过能被window执行的脚本启动word触发宏事件转化操作,我们这里可以用bat批量cmd脚本方式,具体脚本如下
start winword.exe tool.doc
到这里,批量定时任务将rtf文件转为docx的工作就完成了!