1

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

4 に答える 4

1

私は醜い回避策を見つけました:

  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();
于 2012-02-10T09:06:31.217 に答える
1

3秒間待つと、問題が解決します

于 2013-02-19T13:41:22.483 に答える
0

同じエラーが発生し、追加するppt.visible = trueだけで十分でした。

于 2015-03-24T06:34:05.753 に答える
-1

OpenまたはConnectの代わりにAddを使用してみてください

例えば:

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

于 2012-06-09T05:31:37.823 に答える