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
Ǥ
