【问题标题】:VBA/VBS Pasting in field not working in Word 2013VBA / VBS粘贴在Word 2013中不起作用
【发布时间】:2015-03-02 09:50:48
【问题描述】:

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

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

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

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

【问题讨论】:

  • 请添加一些周边代码。特别是 application.Selection 如何设置为字段内容?我的直觉是2013年的选择范围不同;我也遇到过类似的问题。

标签: vba vbscript ms-word clipboard paste


【解决方案1】:

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

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多