【问题标题】:Insert a wdFieldDate into a Word (2010) document with VBA使用 VBA 将 wdFieldDate 插入 Word (2010) 文档
【发布时间】:2014-08-21 04:33:34
【问题描述】:

我正在编写一些 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

单元格为粗体。

任何线索

【问题讨论】:

    标签: vba field ms-word word-2010


    【解决方案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)
    

    【讨论】:

      【解决方案2】:

      折叠范围将为您解决问题。请参阅代码的第 3 行。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多