Word,AppleScript - 使用内联形状的“更新链接格式”?

时间:2016-07-27 19:30:51

标签: macos ms-word applescript

在与Word 2011内联形状交互时,AppleScript中是否有任何成功发布“更新”?

我有以下代码(大部分来自Mac Office 2004 AppleScript参考):

tell application "Microsoft Word"
    repeat with aShape in (get inline shapes of active document)
        if auto update of link format of aShape is false then
            update link format of aShape
        end if
    end repeat
end tell

据我所知,这只是获取内联形状,对于自动更新设置为false的那些,它会显示“从链接更新形状。”

我插入图片,确保将其链接到文件(假设为"/Users/me/Documents/myfile.png")。如果我要求Word在AppleScript中“给我一个内联形状及其路径列表”,我会看到"/Users/me/Documents/myfile.png"。好的,很酷。

然后我运行代码。

发生了一些事情:

  1. auto update说它的价值缺失 - 我必须检查missing value这似乎是错误的。我认为它应该是一个BOOL,但是......它只是零。
  2. 如果我检查缺失值 并且忽略它(这可能是我的问题的一部分)并且我在形状上运行update link format,形状的路径完全被移除。 所以在这一点上,我的形状路径完全消失了 - 永远。图像仍在文档中,但路径/链接已被删除。
  3. 我必须假设我在这里做错了。

    有没有人对如何update link format正确提出任何建议?

    提前谢谢

    注意:我正在编写一个Cocoa应用程序并且选择尝试合并AppleScript方法,因为Obj-C应用程序对象的一般“更新”方法似乎接受枚举而不是实际对象...和它似乎也没有做任何事情。

1 个答案:

答案 0 :(得分:1)

实际上,我认为你没有做错任何事,但我认为这需要一个技巧才能让这些东西发挥作用,而我并不完全确定。无论如何,这种解释对于评论来说太长了。

作为一般观察,在Word中,如果属性与该情况无关,则往往会获得missing value。因此,我认为如果您的图片中没有任何链接,link format of aShape将返回missing value

任何有链接的形状都应该有link format a missing value。但AFAIK auto update仅适用于作为OLE对象链接的内联形状,在这种情况下auto update的值可以是truefalse,但对于不是OLE链接,auto update将是missing value

(在Word的早期版本中,粗略地说,链接的图像由字段代码表示。如果它是通过OLE链接的,字段类型将是{LINK}。否则,如果它只是一个图片文件的链接,字段类型将是{INCLUDEPICTURE}。在Word的最新版本中,图形的处理已经多次改变,如果你自己插入它们,通常只会看到这些字段代码,或者如果您将文档另存为.doc而不是.docx)

因此,您可能需要做的一件事就是检查inline shape type的{​​{1}}并根据类型调整处理。

AFAIK如果你有一个链接的OLE对象,那么使用inline shape应该可行。但如果它是图片文件的链接,它就不会。似乎工作的是将图片的全名设置为自己,例如

update link format

除此之外,其结果实际上是用带有消息的方框替换图片。但重复命令确实会出现更新链接,即

set source full name of link format of aShape to source full name of link format of aShape