我已经获得了适用于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 Support site表示唯一必需的参数是文件名。
答案 0 :(得分: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 :(得分:1)
我等了3秒就解决了问题
答案 2 :(得分:0)
我收到同样的错误,添加ppt.visible = true
对我来说已经足够了。
答案 3 :(得分:-1)
尝试使用“添加”而不是“打开”或“连接”
例如:
presentation = ppt.Presentations.Add('c:\file.pptx');