# scenario03.rb.txt: ruby script (encoding: Windows-31J) # シナリオ作成とその表示 z_scenario03.xls を出力 # 本業と副業の2種類のシナリオを登録 # 本業:飲食店, 通信販売, 塾経営。副業: 副業A, 副業B, 副業C # 各々の事業は「事業,収入,支出,利益(自動的に算出)」の4項目から構成される # 本業と副業から、その合算を自動的に算出する # 本業と副業の総ての組合せを表示。各組合せをワークシートを替えて表示 require "exlap" filename = "z_scenario03.xls" if test(?e, filename) # z_scenario03.xlsが存在するなら削除 File.unlink(filename) end # シナリオ登録のための各種情報を設定 # セルの名前定義(「名前付き範囲」を1つづつのセルに適用する) cell_names_str = <name, 'ChangingCells'=>changing_cells[idx], 'Values'=>values) end end # 本業と副業の総ての組合せを表示 scenario_group[0].each do |info1| scenario_name1 = info1[0] scenario_group[1].each do |info2| scenario_name2 = info2[0] ss.Scenarios(scenario_name1).Show ss.Scenarios(scenario_name2).Show ss.range_autofit # セルの幅を自動調整 ss.Copy({'Before'=>ss}) # 現シートの前に複製シートを新設 ss2 = wb.offset_sheet(ss, -1) # 新設の複製シートに移る ss2.Name = scenario_name1 + "&" + scenario_name2 if ss2.Scenarios.Count == 0 # シナリオがコピーされていない場合 ss2.Scenarios.Merge(ss) # ssのシナリオをss2にコピー end end end wb.delete_sheet(ss.Name) wb.ss(1).Activate wb.save # ワークブックの保存 end xl.quit # Excelの終了