2013-08-07 50 views
0

我有一个的VBScript(尽管我可以涉及VBA),其具有:VBA/VBS粘贴在字段在Word不工作2013

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

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

问题 在早期版本的Word,粘贴将在该领域本身进行,因此更换为新文本“默认”文本,但在Word 2013,这将导致删除“默认”的文本和粘贴数据作为纯文本之前的字段。所以你会以纯文本和空白字段结束。

+0

请添加一些周围的代码。特别是,如何将application.Selection设置为字段内容?我的直觉是2013年的选择范围不同,我有类似的问题。 –

回答

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)