win32ole
(A)だとA列4行目に入っている値が取れてくるのに、(B)だと7行目に入っている値が取れてくるっていう動きがいまいち腑に落ちない。
require 'win32ole' require 'pp' def getAbsolutePath filename fso = WIN32OLE.new('Scripting.FileSystemObject') return fso.GetAbsolutePathName(filename) end filename = getAbsolutePath("sample1.xls") xl = WIN32OLE.new('Excel.Application') book = xl.Workbooks.Open(filename) begin book.Worksheets.each do |sheet| range = sheet.Range(sheet.Cells(4, 1), sheet.Cells(4, 3)) pp range.Cells(1, 1).value #(A) pp range.Range(range.Cells(1, 1), range.Cells(1, 3)).value #(B) end ensure book.Close xl.Quit end