用于在MSWord评论中插入超链接的Applescript

时间:2014-01-24 12:17:42

标签: ms-word applescript

我正在尝试在Word注释中添加超链接对象。 要在活动文档中创建新注释,我正在使用这段脚本:

告诉应用程序“Microsoft Word”     将tempString设置为“lorem ipsum”     在选择时使用属性{comment text:tempString}制作新的Word注释 结束告诉

但现在我无法获得对新创建的注释的引用,无法使用命令“make new hyperlink object”。

感谢您的任何建议。

的Riccardo

2 个答案:

答案 0 :(得分:0)

我认为你不能使用make new Word注释返回的对象(至少在这种情况下不是这样),你必须插入一个唯一的,可查找的字符串然后遍历注释:

tell application "Microsoft Word"
    -- insert a unique string
    set tempString to (ASCII character 127) 
    set theComments to the Word comments of the active document
    repeat with theComment in theComments
        if the content of the comment text of theComment = tempString then
            set theRange to the comment text of theComment
            -- you do not have to "set theHyperlink". "make new" is enough
            set theHyperlink to make new hyperlink object at theRange with properties {text range:theRange, hyperlink address:"http://www.google.com", text to display:"HERE", screen tip:"click to search Google"}
            insert text "You can search the web " at theRange
            exit repeat
        end if
    end repeat
end tell

(编辑为在超链接之前插入一些文本。如果要在超链接后插入文本,还可以使用“插入文本”文本“在范围的末尾。”。

因此,对于添加文字,毕竟使用“显而易见的”就足够了。

[ 对于其他人找到这个答案。在Applescript中使用Word范围的基本问题是,每次尝试在“注释”故事中重新定义范围都会产生主文档故事中的范围。好吧,我可能没有尝试过所有可能的方法,但是例如,折叠范围,移动范围的开始等等都会导致问题。在过去,我已经注意到其他故事范围,但没有调查到这一点。

另外,我怀疑你不能为你刚刚创建的Word注释设置范围的原因是因为Comment的属性指定了某种范围对象,我认为它是一个临时对象,可能会立即被销毁创作之后。因此尝试引用刚刚创建的对象不起作用。

答案的这一部分已修改......

最后,我发现用“丰富内容”填充注释的唯一另一种方法是将内容插入到已知位置的文档中,然后将其格式化文本复制到注释中,例如,如果“已知地点是选择,您可以通过

设置评论的内容
set the formatted text of the comment text of theComment to the formatted text of the text object of the selection

如果您使用的是支持VBA和Applescript的Word版本,我实际上并没有看到任何技术的原因,您不应该调用VBA来执行这些棘手的事情,即使你需要主代码是Applescript。 ]

答案 1 :(得分:0)

最后我得到了一个解决方案:

https://discussions.apple.com/message/24628799#24628799

允许我在引用中插入带有部分注释文本的超链接,如果以后某人将搜索相同的行,则使用以下行:

tell application "Microsoft Word"

      set wc to make new Word comment at end of document 1 with properties {comment text:"some text"}
      set ct to comment text of wc
      set lastChar to last character of ct
      make new hyperlink object at end of document 1 with properties {hyperlink address:"http://www.example.com", text object:lastChar}

end tell