открытие презентаций powerpoint в ruby ​​через win32ole - PullRequest
1 голос
/ 09 февраля 2012

У меня есть этот кусок кода, который работает для Excel.

  require 'win32ole'
  excel = WIN32OLE.new('Excel.Application')
  excel.visible = true
  workbook = excel.Workbooks.Open('c:\file.xls');

Но у меня проблемы с тем, как сделать то же самое с PowerPoint;Этот фрагмент кода:

  require 'win32ole'
  ppt = WIN32OLE.new('Powerpoint.Application')
  ppt.visible = true
  presentation = ppt.Presentations.Open('c:\file.pptx');

Генерирует эту ошибку:

filename.rb in `method_missing': (in OLE method `Open': ) (WIN32OLERuntimeError)
OLE error code:80004005 in <Unknown>
<No Description>
HRESULT error code:0x80020009
Exception occurred.

Сайт поддержки Microsoft говорит, что единственным обязательным параметром является имя файла.

Ответы [ 4 ]

1 голос
/ 19 февраля 2013

Я поставил 3 секунды ожидания, и это решает проблему

1 голос
/ 10 февраля 2012

Я нашел уродливый обходной путь:

  require 'win32ole'
  require 'fileutils'

  ppt = WIN32OLE.new('PowerPoint.Application')
  ppt.visible = true
  system "start c:/presentation.ppt"
  puts ppt.ActivePresentation.Slides.Count()
  ppt.ActivePresentation.Slides(2).Export("filename.jpg", ".jpg", 1024,768)
  ppt.ActivePresentation.Close();
0 голосов
/ 24 марта 2015

Я получил ту же ошибку, и добавление ppt.visible = true было достаточно для меня.

0 голосов
/ 09 июня 2012

Попробуйте использовать Добавить вместо Открыть или Подключиться

, например:

presentation = ppt.Presentations.Add('c:\file.pptx');

...