From: David Lewis Date: 2011-05-01T09:53:24+09:00 Subject: Win32OLE.const_load -- where to find missing constants I just spent a couple of hours tracking this down, so I'm posting it for anyone else who might have trouble finding various Win32OLE constants. I needed constants msoGroup and msoAutoShape in PowerPoint (determined by running VBA code in PPT and inspecting the variables in the locals window). According to standard practice explained in many places on the web, this code should have done it... module MSO end $ppt = WIN32OLE.new('PowerPoint.Application') WIN32OLE.const_load($ppt, MSO) But it didn't -- those constant did not get loaded. I got a total of 1399 constants loaded, but many that I needed were missing. After rummaging around a bit, I found that there are a lot of symbols in the MS Object library, and further experimentation indicated that version 11.0 worked for my installation -- Office 2010. So, I added this line to the above... WIN32OLE.const_load('Microsoft Office 11.0 Object Library', MSO) And now MSO has all the constants from both sources, including the two I need, though at the price of "warning: already initialized constant CONSTANTS". For your added pleasure, here is the complete code, including what I used to rummage around in the debugger (RubyMine -- recently adopted and working nicely after Oracle decommitted Ruby from the formerly lovely NetBeans). kill_CONSTANTS is to eliminate the warning. I'm sure there are slicker ways to code all this, but it worked. $ppt = WIN32OLE.new('PowerPoint.Application') $ppt.Visible = true WIN32OLE.const_load($ppt, MSO) MSO::kill_CONSTANTS WIN32OLE.const_load('Microsoft Office 11.0 Object Library', MSO) y = MSO::MsoAutoShape x = MSO::MsoGroup def class_constants(cls) cls.constants.collect do |sym| sym.to_s + "=" + eval(cls.to_s + "::" + sym.to_s).to_s end.sort! end cc = class_constants(MSO) -- Posted via http://www.ruby-forum.com/.