我正在将Windows中的项目移植到 OSX。我已经克服了 OSX Word 2011 的 VBA不允许您将 POST 发送到服务器的问题,并且已经弄清楚如何从外部脚本返回字符串结果。现在我必须从使用我的外部脚本的返回构建的 URL 将图像插入到我的 Word 文件中。
当前尝试如下,在 Windows 中有效,但在 OSX 中使 Word 崩溃:
Selection.InlineShapes.AddPicture FileName:=File_Name, _
LinkToFile:=False, SaveWithDocument:=True
在做了一些研究之后,看起来 MS 可能已将 OSX 中的此功能作为“安全风险”禁用。我仍然需要让它工作。有没有人知道 VBA for Office 2011 中的一种方法来完成这项工作,或者禁止这种解决方法?如果可能,我会尽量避免将图像文件写入磁盘。
更新:我创建了一个用于从 URL 获取图像文件的 Python 脚本,但我仍然不知道如何从 Python 脚本将此图像获取到 VBA,然后从那里获取到光标所在位置的 Word 文档。脚本的重要部分如下。图像作为PIL
对象读入,我可以img.show()
很好地显示它,但我不确定这是什么文件类型或如何让 VBA 接受它。
# Import the required libraries
from urllib2 import urlopen, URLError
from cStringIO import StringIO
from PIL import Image
# Send request to the server and receive response, with error handling!
try:
# Read the response and print to a file
result = StringIO(urlopen(args.webAddr + args.filename).read())
img = Image.open(result)
img.show()
except URLError, e:
if hasattr(e, 'reason'): # URL error case
# a tuple containing error code and text error message
print 'Error: Failed to reach a server.'
print 'Reason: ', e.reason
elif hasattr(e, 'code'): # HTTP error case
# HTTP error code, see section 10 of RFC 2616 for details
print 'Error: The server could not fulfill the request.'
print 'Error code: ', e.code
请注意,在上面,args.webAddr
并args.filename
使用argparse
库传递给脚本。该脚本有效,并将显示我期望的图像文件。关于如何将该图像放入 Word 2011 for OSX 并将其插入光标下的任何想法?
非常感谢!
编辑:自迁移到 github 后更新了项目的链接。