require 'excel' require 'file-win32' require 'getopts' class WorkbookJoiner def initialize(workbook) @workbook = workbook @uselessSheetCount = workbook.sheets.count while @uselessSheetCount > 1 @workbook.sheets(@uselessSheetCount).delete @uselessSheetCount -= 1 end end def addWorkbook(workbookToAdd) sheetsToAdd = workbookToAdd.sheets sheetCountToAdd = sheetsToAdd.count lastSheet = @workbook.sheets(@workbook.sheets.count) for i in 1..sheetCountToAdd sheetsToAdd.item(i).copy({'After'=>lastSheet}) lastSheet = @workbook.sheets(@workbook.sheets.count) end if @uselessSheetCount > 0 then @workbook.sheets(@uselessSheetCount).delete @uselessSheetCount -= 1 end end end if getopts(nil, "o:") == nil then raise <bookName,'ReadOnly'=>true}) joiner.addWorkbook(book) end outBook.worksheets(1).select outBook.saveAs({'Filename'=>outBookName}) end