superclass=Object
type=class
library=win32ole
extended=
included=

OLEȥ᡼󥵡ФRuby뤿Υ饹Ǥ

Windows¿Υץꥱ饤֥ϡCOMȸƤФAPIѤ¾ΥץफǤޤWIN32OLEݡȤƤΤϡCOMAPIΤä˥󥿡ץ꥿ѤΥ󥿡եǤOLEȥ᡼IDispatch󥿡եˤȤտ魯ե쥯ѤΥ󥿡եǤ

Υ󥿡ե򥵥ݡȤƤɽŪWindowsץꥱˡOfficeIEiTunesIllustratorޤޤWMIWshShellʤɤΥ饤֥ѤWindowsξ뤳ȤǽǤΥץOLEȥ᡼󥵡ФȸƤӤޤ

WIN32OLE֥ȤϡOLEȥ᡼󥵡Ф󶡤᥽åɤץѥƥRuby°бˤ򥹥ץȤƤӽФʤ󶡤ޤƤӽФˤϡRubyΥ֥ȤƱͤ˥֥Ȥ³ơ.פȥ᥽å̾ɬפǤаΥꥹȤ򵭽ҤޤǸΰHashꤷϡ̾դȤƥ˥ѥ᡼̾ͤ˰Ǥޤ

=== ץ륳

  require 'win32ole'

  excel = WIN32OLE.new('Excel.Application')
  workbook = excel.Workbooks.Open('workbook.xls')
  workbook.PrintOut
  workbook.Close(:SaveChanges => false)
  excel.Quit

ʤOLEȥ᡼λͤǤϥ᥽å̾ʸȾʸ̤ޤ󡣤ΤᡢʲΤ褦OLEȥ᡼󥵡ФΥ᥽å̾ϾʸǵҤƤ⹽ޤ

  require 'win32ole'

  excel = WIN32OLE.new('Excel.Application')
  workbook = excel.workbooks.open('workbook.xls')
  workbook.printout
  workbook.close(:SaveChanges => false)
  excel.quit


=== ޥåɤǤ

˰ʲεҤWIN32OLEξΥСλͤꤹΤǤϤޤ

WIN32OLEϥ󥰥륹åɥ⡼ɤCOMȥ󥿡եޤΤᡢruby 1.9ʹߤRubyThreadȥͥƥ֥åɤ11б¹ԴĶǤϥåɤޤƤӽФϥ顼Ȥʤޤ

  excel = WIN32OLE.new('Excel.Application')
  Thread.start do
    workbook = excel.Workbooks.Open('workbook.xls') #=> HRESULT error code:0x800401f0
    workbook.PrintOut
    workbook.Close(:SaveChanges => false)
  end.join
  excel.Quit

ȯ륨顼Threadμ¹ˡˤä0x800401f0CO_E_NOTINITIALIZEDˤޤ0x8001010eRPC_E_WRONG_THREADˤǤ
