0

我有一个 VBScript(虽然我可以将它与 VBA 联系起来),它具有:

Set selection = application.Selection
With document.Fields.Add(selection.Range, 35, "Default" , True)
  .Result.Paste
  ...

注意:文档变量之前已声明,如果字段类型引用,则为 35。

问题 在以前的 Word 版本中,粘贴将在字段本身中完成,因此用新文本替换“默认”文本,但在 Word 2013 中,这将导致删除“默认”文本并将字段前面的数据作为纯文本粘贴。所以你最终会得到纯文本和空字段。

4

1 回答 1

0

我做了一个解决方法,它使用选择将其粘贴到字段中。

Set application = GetObject(, "Word.Application")

Function PasteInField(f)
    Set s = application.Selection
    'select all except last char and paste data instead of it
    f.Result.Select
    s.SetRange s.Start, s.Start+Len(f.Result.Text)-1
    s.Paste
    'select last char and remove it
    f.Result.Select
    s.SetRange s.End-1, s.End
    s.Delete
end Function

它基本上会选择除最后一个字符之外的所有字符,然后粘贴,最后删除剩余的字符。我的字段是这样创建的:

set field = application.ActiveDocument.Fields.Add(selection.Range, 35, "DEFAULT" , True)
于 2013-08-12T09:09:05.400 回答