我不是一个真正的交易程序员,所以请原谅我,如果我不知道任何标准的调试工具。
我有I thought was a very simple VBScript(仅使用.vbs
扩展程序保存的txt文件):
Const wdDoNotSaveChanges = 0
Const wdRevisionsViewFinal = 0
Const wdFormatPDF = 17
Dim arguments
Set arguments = WScript.Arguments
Function DOC2PDF(sDocFile)
Dim fso ' As FileSystemObject
Dim wdo ' As Word.Application
Dim wdoc ' As Word.Document
Dim wdocs ' As Word.Documents
Set fso = CreateObject("Scripting.FileSystemObject")
sDocFile = fso.GetAbsolutePathName(sDocFile)
sPdfFile = fso.GetParentFolderName(sDocFile) + "\" + fso.GetBaseName(sDocFile) + ".pdf"
Set wdo = CreateObject("Word.Application")
Set wdocs = wdo.Documents
Set wdoc = wdocs.Open(sDocFile)
if fso.FileExists(sPdfFile) Then
fso.DeleteFile sPdfFile, True
End If
Set wview = wdoc.ActiveWindow.View
wview.ShowRevisionsAndComments = False
wview.RevisionsView = wdRevisionsViewFinal
wdoc.SaveAs sPdfFile, wdFormatPDF
wdo.Quit wdDoNotSaveChanges
Set fso = Nothing
Set wdo = Nothing
End Function
但是,以下一行引起了巨大的悲痛:
Set wdoc = wdocs.Open(sDocFile)
有时Word ActiveX对象只是在此步骤冻结。我已经通过一些超级简单的调试验证了这一点,在每一行之后放置一个WriteLine并查看它停止的位置。
Word只是坐在那里消耗100%的CPU,脚本永远不会超过这一步。
如何进行调试以了解Word ActiveX对象到底发生了什么,为什么它只是悬挂而永不返回?
答案 0 :(得分:2)
Word可能正在等待您的提示。我会让Word可见,看看你是否可以直观地看到问题所在:
Set wdo = CreateObject("Word.Application")
'if memory serves, this should make Word visible
wdo.Visible = true
Set wdocs = wdo.Documents