VBScript正在导致WINWORD.EXE和WSCRIPT.EXE挂起

VBScript正在导致WINWORD.EXE和WSCRIPT.EXE挂起,vbscript,Vbscript,我有一个.vbs脚本,用于自动创建.doc文件 从.bat或直接从命令行启动时,此脚本运行良好。但我有一个外部程序启动了这个脚本,它挂起了。发生这种情况时,任务管理器中会有一堆WINWORD.exe和WSCRIPT.exe条目 此代码是否有任何明显的错误,可能导致问题 Const wdReplaceAll = 2 Const workPath = "d:\work" Const template = "template\template.doc" UniqueId = Wscript.Argu

我有一个.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
即使

不,没有什么明显的问题。 看一看上面提到的externel程序、自动化过程并调试它们


我已经编辑了你的问题并重新格式化了代码块。对于潜在的回答者来说,找到一个描述得很好的问题、很好的格式和不太容易滚动的内容总是更令人愉快的。

即使

不,没有什么明显的问题。 看一看上面提到的externel程序、自动化过程并调试它们



我已经编辑了你的问题并重新格式化了代码块。对于潜在的回答者来说,找到一个描述良好的问题、良好的格式和不太容易滚动的内容总是更令人愉快的。

请简要解释一下,哪个外部程序调用此脚本?你知道它是用cscript还是wscript调用的吗?它可以用cscript或wscript调用。它是一个调用在服务器上运行的iPShellExecute()的程序。一个自动化的进程启动它,然后vbs脚本运行并生成.doc。但它没有运行。如果我获取它正在调用的命令行字符串并将其放入CMD或.bat中,它运行良好…好的,在您描述的问题中,您描述了另一种行为。如果脚本使用(完全)相同的命令行运行,则问题来自调用过程。(例如,在另一个用户上下文中运行,在循环中结巴…)听说过这个叫做的东西吗?你能简单解释一下,哪个外部程序调用这个脚本吗?你知道它是用cscript还是wscript调用的吗?它可以用cscript或wscript调用。它是一个调用在服务器上运行的iPShellExecute()的程序。一个自动化的进程启动它,然后vbs脚本运行并生成.doc。但它没有运行。如果我获取它正在调用的命令行字符串并将其放入CMD或.bat中,它运行良好…好的,在您描述的问题中,您描述了另一种行为。如果脚本使用(完全)相同的命令行运行,则问题来自调用过程。(例如,在另一个用户环境中运行,在循环中结巴…)听说过这个叫做的东西吗?