如何在VBScript中保存活动的“Word”文档?

时间:2011-02-21 04:07:34

标签: vbscript automation ms-word

这里我有一个小的VBS脚本,帮助我在MS“Word”2003中向表中添加一个新行:

Set wd = CreateObject("Word.Application")

wd.Visible = True

Set doc = wd.Documents.Open ("c:\addtotable.doc")

Set r = doc.Tables(1).Rows.Add

aa = Split("turtle,dog,rooster,maple", ",")

For i = 0 To r.Cells.Count - 1
  r.Cells(i + 1).Range.Text = aa(i)
Next

它工作正常,但它不保存任何东西。我希望它保存执行的更改。

通过“Word”中的宏录制方法,我得到了这个保存活动“Word”文档的宏命令:

ActiveDocument.Save

所以,我决定将这个宏附加到上面的VBS脚本中:

 Set wd = CreateObject("Word.Application")

    wd.Visible = True

    Set doc = wd.Documents.Open ("c:\addtotable.doc")

    Set r = doc.Tables(1).Rows.Add

    aa = Split("turtle,dog,rooster,maple", ",")

    For i = 0 To r.Cells.Count - 1
      r.Cells(i + 1).Range.Text = aa(i)
    Next

     ActiveDocument.Save

但它没有保存任何东西。我在这里做错了什么?

2 个答案:

答案 0 :(得分:4)

在进行这些更改后,您是否尝试过调用doc.Save?如果这不起作用:

问题在于,ActiveDocument不会像在Word的VBA中那样自动引用您认为它在VBScript中的作用。

尝试将新变量设置为活动文档,如下所示:

Dim activeDoc
Set activeDoc = wd.ActiveDocument
activeDoc.Save

答案 1 :(得分:2)

我认为您必须使用ActiveDocument.SaveAs("C:\addtotable.doc");,因为我找不到.Save的任何文档。 SaveAs接受第二个参数,该参数指定要将其保存的格式。参数 here 的Pastebin。