同步操作将从 fwy1998/VBScript_DOC2PDF 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Dim fso,fld,PathSet fso = WScript.CreateObject("Scripting.Filesystemobject")Path = fso.GetParentFolderName(WScript.ScriptFullName) '获取脚本所在文件夹字符串Set fld=fso.GetFolder(Path) '通过路径字符串获取文件夹对象Dim Sum,IsChooseDelete,ThisTimeSum = 0Dim LogFileSet LogFile= fso.opentextFile("log.txt",8,true)Dim ListSet List= fso.opentextFile("ConvertFileList.txt",2,true)Call LogOut("开始遍历文件")Call TreatSubFolder(fld) '调用该过程进行递归遍历该文件夹对象下的所有文件对象及子文件夹对象Sub LogOut(msg)ThisTime=NowLogFile.WriteLine(year(ThisTime) & "-" & Month(ThisTime) & "-" & day(ThisTime) & " " & Hour(ThisTime) & ":" & Minute(ThisTime) & ":" & Second(ThisTime) & ": " & msg)End SubSub TreatSubFolder(fld)Dim FileDim tsFor Each File In fld.Files '遍历该文件夹对象下的所有文件对象If UCase(fso.GetExtensionName(File)) ="DOC" or UCase(fso.GetExtensionName(File)) ="DOCX" ThenList.WriteLine(File.Path)Sum = Sum + 1End IfNextDim subfldFor Each subfld In fld.SubFolders '递归遍历子文件夹对象TreatSubFolder subfldNextEnd SubList.closeCall LogOut("文件遍历已完成,已找到" & Sum & "个word文档")If MsgBox("文件遍历已完成,已找到" & Sum & "个word文档,详细列表在" & vbCrlf & fso.GetFolder(Path).Path & "\ConvertFileList.txt" & vbCrlf & "您可以自行修改列表以增删要转换的文档" & vbCrlf & vbCrlf & "是否将这些文档转换为PDF格式?", vbYesNo + vbInformation, "文档遍历完成") = vbYes ThenIf MsgBox("是否在转换完毕后删除DOC文档?", vbYesNo+vbInformation, "是否在转换完毕后删除源文档?") = vbYes ThenIsChooseDelete = MsgBox("请再次确认,是否在转换完毕后删除DOC文档?", vbYesNo + vbExclamation, "是否在转换完毕后删除源文档?")End IfelseMsgbox("已取消转换操作")Wscript.QuitEnd IfMsgBox "请在开始转换前退出所有Word文档避免文档占用错误发生", vbOKOnly + vbExclamation, "警告"'创建Word对象,兼容WPSConst wdFormatPDF = 17On Error Resume NextSet WordApp = CreateObject("Word.Application")' try to connect to wpsIf WordApp Is Nothing Then '兼容WPSSet WordApp = CreateObject("WPS.Application")If WordApp Is Nothing ThenSet WordApp = CreateObject("KWPS.Application")If WordApp Is Nothing ThenMsgBox "本程序依赖office 2010及以上版本,兼容WPS," & vbCrlf & "请在使用本程序前安装office word 或WPS,否则本程序无法使用", vbCritical + vbOKOnly, "无法转换"WScript.QuitEnd IfEnd IfEnd IfOn Error Goto 0WordApp.Visible=false '设置视图不可见Sum = 0Dim FilePath,FileLineSet List= fso.opentextFile("ConvertFileList.txt",1,true)Do While List.AtEndOfLine <> TrueFileLine=List.ReadLineIf FileLine <> "" and Mid(FileLine,1,2) <> "~$" ThenSum = Sum + 1 '获取用户修改后的文件列表行数End IfloopList.closeMsgBox "现在开始转换,若是在运行过程中弹出Word窗口"&vbCrlf&"请直接最小化Word窗口,不要关闭!"&vbCrlf&"请直接最小化Word窗口,不要关闭!"&vbCrlf&"请直接最小化Word窗口,不要关闭!"&vbCrlf&"重要的事情说三遍!关闭会导致脚本退出", vbOKOnly + vbExclamation, "警告"Dim FinishedFinished = 0Set List= fso.opentextFile("ConvertFileList.txt",1,true)Do While List.AtEndOfLine <> TrueFilePath=List.ReadLineIf Mid(FilePath,1,2) <> "~$" Then '不处理word临时文件Set objDoc = WordApp.Documents.Open(FilePath)'WordApp.Visible=false '设置视图不可见(避免运行时因为各种问题导致的可见)'上面这行有问题,现在遇到大批量有啥宏定义的运行起来就是一闪一闪的,还不如没有If WordApp.Visible = true ThenWordApp.ActiveDocument.ActiveWindow.WindowState = 2 'wdWindowStateMinimizeEnd IfobjDoc.SaveAs Left(FilePath,InstrRev(FilePath,".")) & "pdf", wdFormatPDF '另存为PDF文档LogOut("文档" & FilePath & "已转换完成。(" & Finished & "/" & Sum & ")")WordApp.ActiveDocument.CloseFinished = Finished + 1End IfIf IsChooseDelete = vbYes Thenfso.deleteFile FilePathLogOut("文件" & FilePath & "已被成功删除")End Ifloop'扫尾处理,ConvertFileList.txt和log.txt要自动删除的请去掉下面两行开头单引号'fso.deleteFile "ConvertFileList.txt"'fso.deleteFile "log.txt"List.closeLogOut("文档转换已完成")LogFile.closeDim MsgMsg = "已成功转换" & Finished & "个文件"If IsChooseDelete = vbYes ThenMsg=Msg + "并成功删除源文件"End IfMsgBox Msg & vbCrlf & "日志文件在" & fso.GetFolder(Path).Path & "\log.txt"Set fso = nothingWordApp.QuitWscript.Quit
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。