2011-06-22 70 views
2

我不是一個真正的交易程序員,所以請原諒我,如果我不知道任何標準的調試工具。從VBScript打開Word掛起,無法弄清楚爲什麼

我有什麼I thought was a very simple VBScript(只是一個txt文件保存爲.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) 

有時候話語ActiveX對象只凍結在這一步。我已經通過一些超級簡單的調試驗證了這一點,在每行之後放置一個WriteLine並查看它停止的位置。

Word只是坐在那裏消耗100%的CPU,腳本永遠不會超過這一步。

我該如何進行調試以瞭解Word ActiveX對象到底會發生什麼,以及爲什麼它只是掛起而不會返回?

回答

2

單詞可能正在等待您的提示。我會讓Word可見,看看你是否可以直觀地看到問題是什麼:

Set wdo = CreateObject("Word.Application") 
    'if memory serves, this should make Word visible 
    wdo.Visible = true 
    Set wdocs = wdo.Documents 
+0

完美 - 這很好。現在我可以看到,當它從我的本地帳戶運行時,一切都正常,但是當它從「系統」帳戶運行時,會出現一系列安全錯誤。 –

相關問題