这里我有一个小的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
但它没有保存任何东西。我在这里做错了什么?
答案 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。