По профессии я не программист, так что простите, если я не знаю ни о каких стандартных инструментах отладки.
У меня есть то, что Я думал, что это очень простой VBScript (только текстовый файл, сохраненный с расширением .vbs
):
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% ЦП, и сценарий никогда не проходит этот шаг.*
Как можно отладить, чтобы узнать, что, черт возьми, происходит с объектом Word ActiveX и почему он просто зависает и никогда не возвращается?