我正在编写一些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
细胞是粗体。
任何线索
答案 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