2012-02-09 13 views
1

Excel用のこのコードがあります。win32ole経由でルビーのパワーポイントを開く

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 Support siteは唯一の必須パラメータがファイル名であることを述べています。

私は醜い回避策を見つけた
+0

パワーポイントの古いバージョンを開くことはできますか?あなたの最初の例では.xlsファイル、2番目の例ではpptx(新しい形式)を開いています。 –

+0

C:\ file.pptxが存在しますか?もしそうでなければ私はそのエラーを得る。 – Anodyne

+0

@Marc Talbot、私もファイルをpptに変換しました。ファイルの両方のバージョンは手動で問題なく開かれています –

答えて

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(); 
-1

ではなく、オープンの追加または例えば

を接続して使用してみてください:

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

1

私は3秒待機を入れて、それは問題を解決します

+0

私は同じ問題を抱えていましたが、実際にはこれはうまくいきました! – Hiro

0

私は同じエラーを持っていますppt.visible = trueを追加すると私にとっては十分だった。

関連する問題