我有这个.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
答案 0 :(得分:0)
即使StackOverflow isn't a debugging service ...
查看提到的外部程序,自动化过程并调试它们。
我已编辑了您的问题并重新格式化了代码块。对于潜在的回答者来说,找到一个描述良好的问题总是比较愉快,格式好,滚动也不多。