我有一个应用程序,此时调用带有~11个参数的VBScript文件。需要捕获并保存这些参数。然后需要调用并填写Word模板文档。这样做的最佳方法是什么?我正在寻找一个解决方案,但显然VBScript不支持与VBA相同的任务,所以我走在墙上。
显示参数:
Set args = WScript.Arguments
For I = 0 to args.Count -1
Wscript.Echo args(I)
Next
宣言:
Set oWord = CreateObject("Word.Application")
oWord.Visible = True
答案 0 :(得分:1)
使用以下脚本解决了问题。
Set args = WScript.Arguments
Dim wordIds
wordIds = Array("idDate", "idName", "idCompany")
Dim oWord
Dim oDoc
Dim sDocPath
' If the next line gives an error continue with the line that comes next '
On Error Resume Next
' Look if a Word object is already open '
Set oApp = GetObject(, "Word.Application")
' If number of errors is higher or lower than 0 create a new Word object '
If Err.Number <> 0 Then
Set oApp = CreateObject("Word.Application")
End If
' Specify the Word document and open it for the user '
sDocPath = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName) & "\template.dotm"
Set oDoc = oApp.Documents.Open(sDocPath)
oApp.Visible = True
' Iterate through all arguments and fill them in the ContentControls'
for I = 0 to args.Count -1
oDoc.SelectContentControlsByTag(wordIds(I))(1).Range.Text = args(I)
Next
脚本接收参数,保存Word文档中使用的标签类型(我使用了富文本内容控件),检查Word是否打开,如果没有打开它,抓取所需文档,最后填写内容使用收到的参数进行控制。用Word 2013测试。 我可能会改变剧本,但这可能是其他人的指南。
答案 1 :(得分:0)
使用oWord
代替Application
:
oWord.CheckGrammar(someString) '// Instead of Application.CheckGrammar()
使用文字而不是wd______
常量:
myDoc.SaveAs2("SomeDoc.docx", 12) '// Instead of myDoc.SaveAs2("SomeDoc.docx", wdFormatXMLDocument)