VBScript导致WINWORD.EXE和WSCRIPT.exe挂起

时间:2016-04-28 18:31:24

标签: vbscript

我有这个.vbs脚本,用于自动创建.doc文件。

从.bat启动或直接从命令行启动时,此脚本运行正常。但我有一个外部程序启动这个脚本,它就会挂起来。发生这种情况时,它在任务管理器中有一堆WINWORD.exe和WSCRIPT.exe条目。

此代码是否存在明显错误,可能导致问题?

Const wdReplaceAll  = 2
Const workPath = "d:\work"
Const template = "template\template.doc"
UniqueId = Wscript.Arguments(0)

If Wscript.Arguments.Named.Exists("Tokens") Then
    strTokens = Wscript.Arguments.Named.Item("Tokens")
End If

If Wscript.Arguments.Named.Exists("Values") Then
    strValues = Wscript.Arguments.Named.Item("Values")
End If

arrToken = Split(strTokens,"|")
arrValue = Split(strValues,"|")

if UBound(arrToken) = UBound(arrValue) Then
    CreateFax UniqueId, arrToken, arrValue
else
    Wscript.Echo "Tokens and Values must be same length"
    Wscript.Echo "Tokens: " & UBound(arrToken) + 1 & " Values: " & UBound(arrValue) + 1 
end if

Sub CreateFax(UniqueId, arrToken, arrValue)
    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True
    objWord.Activate
    objWord.DisplayAlerts = 0
    Set objDoc = objWord.Documents.Open(workPath & "\" & template)
    for i = 0 to UBound(arrToken)
        FindAndReplace objWord.Selection, arrToken(i), arrValue(i)
    next
    objDoc.SaveAs(workPath & "\" & UniqueId & ".doc")
    objWord.Quit
    Set objSelection = Nothing
    Set objDoc = Nothing
    Set objWord = Nothing
End Sub

Sub FindAndReplace (objSelection, strFind, strReplace)
    objSelection.Find.Text = strFind
    objSelection.Find.Forward = TRUE
    objSelection.Find.MatchWholeWord = TRUE
    objSelection.Find.Replacement.Text = strReplace
    objSelection.Find.Execute ,,,,,,,,,,wdReplaceAll
End Sub

1 个答案:

答案 0 :(得分:0)

即使StackOverflow isn't a debugging service ...

不,没有任何明显错误。

查看提到的外部程序,自动化过程并调试它们。

我已编辑了您的问题并重新格式化了代码块。对于潜在的回答者来说,找到一个描述良好的问题总是比较愉快,格式好,滚动也不多。