VBA / VBScript到Word模板文档(.docm / .dotx)

时间:2015-11-13 16:07:21

标签: vba vbscript word-vba

我有一个应用程序,此时调用带有~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

2 个答案:

答案 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)