将Word文档属性中的字段插入带有附加文本的表格单元格中

时间:2017-09-12 18:47:57

标签: vba word-vba

我正在尝试将在Word中的“文档属性”下创建的自定义字段(ProtocolNumber)插入到包含其附加文本的表格单元格中。在这种情况下,我不太确定如何使用Fields.Add函数。对不起,如果问题太基础了,但我是VBA中的黑客。

    NoOfCol = 5
    Set tblNew = ActiveDocument.Tables.Add(Selection.Range, 9, NoOfCol, 
                wdAutoFitWindow)
    With tblNew
      .PreferredWidthType = wdPreferredWidthPercent
      .PreferredWidth = 100
      .Columns(1).PreferredWidth = 100 * NoOfCol * 3 / (NoOfCol + 1)
    End With
    tblNew.Borders.InsideLineStyle = wdLineStyleSingle
    tblNew.Borders.OutsideLineStyle = wdLineStyleSingle
    tblNew.Cell(Row:=1, Column:=1).Merge _
    MergeTo:=tblNew.Cell(Row:=1, Column:=NoOfCol)
    tblNew.Cell(1, 1).Split NumColumns:=2
    tblNew.Cell(1, 1).Range.Text = "PROTOCOL: [ProtocolNumber]"  & vbCrLf & "DRUG/INDICATION:
    :
    :

1 个答案:

答案 0 :(得分:0)

这是您可能正在寻找的代码。

Dim Rng As Range
Dim PropName As String

Set Rng = tblNew,Cell(1, 1).Range
Rng.Collapse wdCollapseStart        ' insert field at start of cell
PropName = "Protocol number"        ' Custom document property by this name must exist
Rng.Fields.Add Range:=Rng, _
               Type:=wdFieldEmpty, _
               Text:="DOCPROPERTY """ & PropName & """", _
               PreserveFormatting:=True

请注意,在执行任何水平合并后,Word将无法访问表中的列。同样,当垂直合并任何单元格时,访问行的能力将会丢失。简而言之,在表格中合并单元格并不是一个好主意,如果你绝对必须这样做,那么在完成访问单元格之后就这样做了。