使用VBA将wdFieldDate插入到Word(2010)文档中

时间:2014-08-21 04:33:34

标签: vba field word-vba word-2010

我正在编写一些VBA,它在word文档模板中设置自定义文档属性的值,在将文档保存到特定文件名之前更新和取消链接。 该文件中有一个日期字段,我需要保持动态。为了实现这一点,我试图在保存文档之前将日期字段插入到表格的单元格中。

fields.add方法要求我使用范围对象。以下简单地将前10个字符替换为我想要的但不在表中

Set rngDoc = ActiveDocument.Range(Start:=0, End:=10)
    ActiveDocument.Fields.Add rngDoc, wdFieldDate

我认为以下方法可以将相同的字段添加到单元格

Set rngDoc = ActiveDocument.Range(Start:=ActiveDocument.Tables(1).Cell(1, 1).Range.Start, End:=ActiveDocument.Tables(1).Cell(1, 1).Range.End)       
ActiveDocument.Fields.Add rngDoc, wdFieldDate   

我得到的只是运行时错误4605 - 此命令不可用

我认为我的范围是正确的,就像我尝试

一样
rngDoc.Bold = True

细胞是粗体。

任何线索

2 个答案:

答案 0 :(得分:1)

通过这种方式设置细胞范围:

Set rngDoc = ActiveDocument.Range(Start:=ActiveDocument.Tables(1).Cell(1, 1).Range.Start, _
                End:=ActiveDocument.Tables(1).Cell(1, 1).Range.End)

您正在尝试覆盖不允许的end cell character

您需要做的就是将最终.End属性更改为.Start,以便将字段置于单元格的开头

Set rngDoc = ActiveDocument.Range(Start:=ActiveDocument.Tables(1).Cell(1, 1).Range.Start, _
                End:=ActiveDocument.Tables(1).Cell(1, 1).Range.Start)

.End -1,通过替换整个单元格内容将您的字段放入整个单元格中:

Set rngDoc = ActiveDocument.Range(Start:=ActiveDocument.Tables(1).Cell(1, 1).Range.Start, 
                End:=ActiveDocument.Tables(1).Cell(1, 1).Range.End - 1)

答案 1 :(得分:0)

折叠范围将为您提供帮助。参见代码的第3行。

Dim rngDoc As Range
Set rngDoc = ActiveDocument.Tables(1).Cell(1, 1).Range
rngDoc.Collapse wdCollapseStart
ActiveDocument.Fields.Add rngDoc, wdFieldDate, PreserveFormatting:=True