如何使用VBA将MergeField插入特定的表格单元格?

时间:2014-05-30 08:43:49

标签: vba word-vba

我在Word 2007中工作。我试图将合并域插入特定单元格(即第二行的第一个单元格),但没有成功。通过简单的插入合并域,我没有问题:

Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
    "MERGEFIELD  $!test ", PreserveFormatting:=True

但是当我尝试将mergefield插入到单元格中时会抛出错误:

  

运行时错误'4605'。该命令不可用。

这是我尝试过的代码:

    collectTable.Cell(1, 1).Select
    Selection.Fields.Add Selection.Range, Type:=wdFieldEmpty, Text:="MERGEFIELD $!testField", PreserveFormatting:=True

我也试过这个:

collectTable.Cell(1, 1).Select
Selection.Fields.Add collectTable.Cell(1, 1).Range, Type:=wdFieldEmpty, Text:="MERGEFIELD $!testField", PreserveFormatting:=True

但结果是一样的。如何使用VBA脚本在表格单元格中插入合并域?

1 个答案:

答案 0 :(得分:3)

在我看来,当你在表格中选择单元格时,选择包括无法用字段替换的终止单元格标记。您需要选择不包含最终标记的单元格区域。

我建议您对代码进行以下改进:

Dim collectTable As Table
Set collectTable = ActiveDocument.Tables(1)

'selecting cell range without cell-end mark
ActiveDocument.Range(collectTable.Cell(1, 1).Range.Start, _
                    collectTable.Cell(1, 1).Range.End - 1).Select

Selection.Fields.Add Selection.Range, _
            Type:=wdFieldEmpty, _
            Text:="MERGEFIELD $!testField", _
            PreserveFormatting:=True