使用WIN32OLE的Word自动化

时间:2008-11-01 17:53:06

标签: ruby ms-word win32ole

我正在尝试将图像(jpg)插入到word文档中,而win32old似乎不支持Selection.InlineShapes.AddPicture,或者我做错了。有没有人有插入图像的运气。

2 个答案:

答案 0 :(得分:2)

您可以通过调用Document.InlineShapes.AddPicture()方法来完成此操作。

以下示例在第二句之前将图像插入到活动文档中。

    require 'win32ole'

    word = WIN32OLE.connect('Word.Application')
    doc = word.ActiveDocument

    image = 'C:\MyImage.jpg'
    range = doc.Sentences(2)

    params = { 'FileName' => image, 'LinkToFile' => false, 
               'SaveWithDocument' => true, 'Range' => range }

    pic = doc.InlineShapes.AddPicture( params )

可以找到有关AddPicture()方法的文档here

有关使用Ruby自动化Word的其他详细信息,请参见here

这是David Mullet的答案,可以找到here

答案 1 :(得分:1)

在WinXP,Ruby 1.8.6,Word 2002 / XP SP3上运行,我记录了宏,并根据我的理解将它们翻译成:

require 'win32ole'

begin
  word = WIN32OLE::new('Word.Application')   # create winole Object
  doc = word.Documents.Add
  word.Selection.InlineShapes.AddPicture "C:\\pictures\\some_picture.jpg", false, true
  word.ChangeFileOpenDirectory "C:\\docs\\"
  doc.SaveAs "doc_with_pic.doc"
  word.Quit
rescue Exception => e
  puts e
  word.Quit
ensure
  word.Quit unless word.nil?
end

似乎有效。有用吗?