robust_excel_ole 1.11 → 1.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog +11 -0
  3. data/README.rdoc +20 -8
  4. data/docs/README_open.rdoc +1 -0
  5. data/docs/README_ranges.rdoc +5 -11
  6. data/examples/{introducing_examples/example_introducing.rb → introductory_examples/example_introductory.rb} +10 -2
  7. data/examples/{introducing_examples → introductory_examples}/example_open.rb +18 -17
  8. data/examples/{introducing_examples → introductory_examples}/example_range.rb +29 -16
  9. data/examples/modifying_sheets/example_access_sheets_and_cells.rb +8 -7
  10. data/examples/modifying_sheets/example_add_names.rb +4 -8
  11. data/examples/modifying_sheets/example_adding_sheets.rb +7 -6
  12. data/examples/modifying_sheets/example_concating.rb +2 -2
  13. data/examples/modifying_sheets/example_copying.rb +3 -3
  14. data/examples/modifying_sheets/example_expanding.rb +2 -2
  15. data/examples/modifying_sheets/example_naming.rb +2 -2
  16. data/examples/modifying_sheets/example_ranges.rb +4 -4
  17. data/examples/modifying_sheets/example_saving.rb +3 -3
  18. data/examples/open_save_close/example_control_to_excel.rb +10 -11
  19. data/examples/open_save_close/example_default_excel.rb +13 -14
  20. data/examples/open_save_close/example_force_excel.rb +9 -10
  21. data/examples/open_save_close/example_if_obstructed_closeifsaved.rb +7 -7
  22. data/examples/open_save_close/example_if_obstructed_forget.rb +5 -5
  23. data/examples/open_save_close/example_if_obstructed_save.rb +7 -7
  24. data/examples/open_save_close/example_if_unsaved_accept.rb +13 -13
  25. data/examples/open_save_close/example_if_unsaved_forget.rb +9 -10
  26. data/examples/open_save_close/example_if_unsaved_forget_more.rb +9 -10
  27. data/examples/open_save_close/example_read_only.rb +6 -6
  28. data/examples/open_save_close/example_rename_cells.rb +4 -5
  29. data/examples/open_save_close/example_reuse.rb +6 -6
  30. data/examples/open_save_close/example_simple.rb +5 -5
  31. data/examples/open_save_close/example_unobtrusively.rb +4 -4
  32. data/lib/robust_excel_ole/address.rb +0 -4
  33. data/lib/robust_excel_ole/bookstore.rb +4 -28
  34. data/lib/robust_excel_ole/excel.rb +17 -22
  35. data/lib/robust_excel_ole/general.rb +11 -18
  36. data/lib/robust_excel_ole/range_owners.rb +17 -27
  37. data/lib/robust_excel_ole/reo_common.rb +7 -3
  38. data/lib/robust_excel_ole/version.rb +1 -1
  39. data/lib/robust_excel_ole/workbook.rb +178 -180
  40. data/lib/robust_excel_ole/worksheet.rb +7 -4
  41. data/robust_excel_ole.gemspec +6 -4
  42. data/spec/bookstore_spec.rb +38 -34
  43. data/spec/data/more_data/workbook.xls +0 -0
  44. data/spec/excel_spec.rb +89 -44
  45. data/spec/general_spec.rb +1 -0
  46. data/spec/range_spec.rb +7 -4
  47. data/spec/workbook_specs/workbook_close_spec.rb +2 -1
  48. data/spec/workbook_specs/workbook_misc_spec.rb +34 -18
  49. data/spec/workbook_specs/workbook_open_spec.rb +112 -71
  50. data/spec/workbook_specs/workbook_save_spec.rb +173 -5
  51. data/spec/workbook_specs/workbook_sheet_spec.rb +6 -42
  52. data/spec/workbook_specs/workbook_unobtr_spec.rb +9 -246
  53. data/spec/worksheet_spec.rb +21 -5
  54. metadata +12 -11
@@ -1,8 +1,8 @@
1
1
  # example_ifunsaved_forget_more.rb:
2
2
  # open with :if_unsaved => :forget, :new_excel, close with :if_unsaved => :save
3
3
 
4
- require File.expand_path('../../lib/robust_excel_ole', File.dirname(__FILE__))
5
- require File.join(File.dirname(File.expand_path(__FILE__)), '../../spec/helpers/create_temporary_dir')
4
+ require_relative '../../lib/robust_excel_ole'
5
+ require_relative '../../spec/helpers/create_temporary_dir'
6
6
  require "fileutils"
7
7
 
8
8
  include RobustExcelOle
@@ -11,26 +11,25 @@ Excel.kill_all
11
11
  begin
12
12
  dir = create_tmpdir
13
13
  file_name = dir + 'workbook.xls'
14
- book = Workbook.open(file_name) # open a book
15
- #book.excel.visible = true # make current Excel visible
16
- sheet = book.sheet(1) # access a sheet
14
+ book = Workbook.open(file_name, :visible => true) # open a workbook
15
+ sheet = book.sheet(1) # access a worksheet
17
16
  first_cell = sheet[1,1].Value
18
17
  sheet[1,1] = first_cell == "simple" ? "complex" : "simple" # change a cell
19
18
  sleep 1
20
- new_book = Workbook.open(file_name, :if_unsaved => :new_excel, :visible => true) # open another book with the same file name in a new Excel
19
+ new_book = Workbook.open(file_name, :if_unsaved => :new_excel, :visible => true) # open another workbook with the same file name in a new Excel
21
20
  sheet_new_book = new_book.sheet(1)
22
- if (not book.alive?) && new_book.alive? && sheet_new_book[1,1].Value == first_cell then # check whether the unsaved book
21
+ if (not book.alive?) && new_book.alive? && sheet_new_book[1,1].Value == first_cell then # check whether the unsaved workbook
23
22
  puts "open with :if_unsaved => :forget : the unsaved book is closed and not saved." # is closed and was not saved
24
23
  end
25
24
  sleep 1
26
25
  sheet_new_book[1,1] = sheet_new_book[1,1].Value == "simple" ? "complex" : "simple" # change a cell
27
- # open another book in the running Excel application, and make Excel visible, closing the unsaved book
26
+ # open another workbook in the running Excel application, and make Excel visible, closing the unsaved workbook
28
27
  another_book = Workbook.open(file_name, :if_unsaved => :forget, :visible => true)
29
28
  sleep 1
30
29
  sheet_another_book = another_book.sheet(1)
31
30
  sheet_another_book[1,1] = sheet_another_book[1,1].Value == "simple" ? "complex" : "simple" # change a cell
32
- another_book.close(:if_unsaved => :forget ) # close the last book without saving it.
33
- book.close(:if_unsaved => :save) # close the first book and save it before
31
+ another_book.close(:if_unsaved => :forget ) # close the last workbook without saving it.
32
+ book.close(:if_unsaved => :save) # close the first workbook and save it before
34
33
  ensure
35
34
  Excel.kill_all # close all workbooks, quit Excel application
36
35
  rm_tmp(dir)
@@ -1,7 +1,7 @@
1
1
  # example_read_only: open with read_only mode. save, close
2
2
 
3
- require File.expand_path('../../lib/robust_excel_ole', File.dirname(__FILE__))
4
- require File.join(File.dirname(File.expand_path(__FILE__)), '../../spec/helpers/create_temporary_dir')
3
+ require_relative '../../lib/robust_excel_ole'
4
+ require_relative '../../spec/helpers/create_temporary_dir'
5
5
  require "fileutils"
6
6
 
7
7
  include RobustExcelOle
@@ -11,17 +11,17 @@ begin
11
11
  dir = create_tmpdir
12
12
  file_name = dir + 'workbook.xls'
13
13
  other_file_name = dir + 'different_workbook.xls'
14
- book = Workbook.open(file_name, :read_only => true, :visible => true) # open a book with read_only and make Excel visible
15
- sheet = book.sheet(1) # access a sheet
14
+ book = Workbook.open(file_name, :read_only => true, :visible => true) # open a workbook with read_only and make Excel visible
15
+ sheet = book.sheet(1) # access a worksheet
16
16
  sleep 1
17
17
  sheet[1,1] = sheet[1,1].Value == "simple" ? "complex" : "simple" # change a cell
18
18
  sleep 1
19
19
  begin
20
20
  book.save # simple save.
21
- rescue WorkbookReadOnly => msg # raises an exception because book is opened in read_only mode
21
+ rescue WorkbookReadOnly => msg # raises an exception because workbook is opened in read_only mode
22
22
  puts "error: save_as: #{msg.message}"
23
23
  end
24
- book.close # close the book without saving it
24
+ book.close # close the workbook without saving it
25
25
  ensure
26
26
  Excel.kill_all # close workbooks, quit Excel application
27
27
  rm_tmp(dir)
@@ -1,8 +1,8 @@
1
1
  # example_simple.rb:
2
2
  # open a book, simple save, save_as, close
3
3
 
4
- require File.expand_path('../../lib/robust_excel_ole', File.dirname(__FILE__))
5
- require File.join(File.dirname(File.expand_path(__FILE__)), '../../spec/helpers/create_temporary_dir')
4
+ require_relative '../../lib/robust_excel_ole'
5
+ require_relative '../../spec/helpers/create_temporary_dir'
6
6
  require "fileutils"
7
7
 
8
8
  include RobustExcelOle
@@ -11,8 +11,7 @@ Excel.kill_all
11
11
  begin
12
12
  dir = create_tmpdir
13
13
  file_name = dir + 'workbook.xls'
14
- book = Workbook.open(file_name) # open a book. default: :read_only => false
15
- book.excel.visible = true # make current Excel visible
14
+ book = Workbook.open(file_name, :visible => true) # open a workbook. default: :read_only => false
16
15
  sheet = book.sheet(1)
17
16
  workbook = book.ole_workbook
18
17
  fullname = workbook.Fullname
@@ -48,7 +47,7 @@ begin
48
47
  sleep 2
49
48
  new_name_object.Delete
50
49
  sleep 2
51
- book.close(:if_unsaved => :forget) # close the book
50
+ book.close(:if_unsaved => :forget) # close the workbook
52
51
 
53
52
  ensure
54
53
  Excel.kill_all # close workbooks, quit Excel application
@@ -1,7 +1,7 @@
1
1
  # example_reuse.rb: open a book in a new Excel and a running Excel instance. make visible
2
2
 
3
- require File.expand_path('../../lib/robust_excel_ole', File.dirname(__FILE__))
4
- require File.join(File.dirname(File.expand_path(__FILE__)), '../../spec/helpers/create_temporary_dir')
3
+ require_relative '../../lib/robust_excel_ole'
4
+ require_relative '../../spec/helpers/create_temporary_dir'
5
5
  require "fileutils"
6
6
 
7
7
  include RobustExcelOle
@@ -13,16 +13,16 @@ begin
13
13
  file_name2 = dir + 'different_workbook.xls'
14
14
  file_name3 = dir + 'different_workbook.xls'
15
15
  file_name4 = dir + 'book_with_blank.xls'
16
- book1 = Workbook.open(file_name1) # open a book in a new Excel instance since no Excel is open
16
+ book1 = Workbook.open(file_name1) # open a workbook in a new Excel instance since no Excel is open
17
17
  book1.excel.visible = true # make current Excel visible
18
18
  sleep 2
19
19
  book2 = Workbook.open(file_name2) # open a new book in the same Excel instance
20
20
  sleep 2
21
- book3 = Workbook.open(file_name3, :force_excel => :new, :visible => true) # open another book in a new Excel instance,
21
+ book3 = Workbook.open(file_name3, :force_excel => :new, :visible => true) # open another workbook in a new Excel instance,
22
22
  sleep 2 # make Excel visible
23
- book4 = Workbook.open(file_name4, :visible => true) # open anther book, and use a running Excel application
23
+ book4 = Workbook.open(file_name4, :visible => true) # open another workbook, and use a running Excel application
24
24
  sleep 2 # (Excel chooses the first Excel application)
25
- book1.close # close the books
25
+ book1.close # close the workbooks
26
26
  book2.close
27
27
  book3.close
28
28
  book4.close
@@ -5,8 +5,8 @@ LOG_TO_STDOUT = false
5
5
  REO_LOG_FILE = "reo2.log"
6
6
  REO_LOG_DIR = "C:/"
7
7
 
8
- require File.expand_path('../../lib/robust_excel_ole', File.dirname(__FILE__))
9
- require File.join(File.dirname(File.expand_path(__FILE__)), '../../spec/helpers/create_temporary_dir')
8
+ require_relative '../../lib/robust_excel_ole'
9
+ require_relative '../../spec/helpers/create_temporary_dir'
10
10
  require "fileutils"
11
11
 
12
12
  include RobustExcelOle
@@ -16,9 +16,9 @@ begin
16
16
  dir = create_tmpdir
17
17
  file_name = dir + 'workbook.xls'
18
18
  other_file_name = dir + 'different_workbook.xls'
19
- book = Workbook.open(file_name) # open a book. default: :read_only => false
19
+ book = Workbook.open(file_name, :visible => true) # open a workbook. default: :read_only => false
20
20
  book.excel.visible = true # make current Excel visible
21
- sheet = book.sheet(1) # access a sheet
21
+ sheet = book.sheet(1) # access a worksheet
22
22
  sleep 1
23
23
  sheet[1,1] = sheet[1,1].Value == "simple" ? "complex" : "simple" # change a cell
24
24
  sleep 1
@@ -30,7 +30,7 @@ begin
30
30
  end
31
31
  book.save_as(other_file_name, :if_exists => :overwrite) # save_as with :if_exists => :overwrite
32
32
  puts "save_as: saved successfully with option :if_exists => :overwrite"
33
- book.close # close the book
33
+ book.close # close the workbook
34
34
  ensure
35
35
  Excel.kill_all # close workbooks, quit Excel application
36
36
  #rm_tmp(dir)
@@ -1,7 +1,7 @@
1
1
  # example_unobtrusively.rb:
2
2
 
3
- require File.expand_path('../../lib/robust_excel_ole', File.dirname(__FILE__))
4
- require File.join(File.dirname(File.expand_path(__FILE__)), '../../spec/helpers/create_temporary_dir')
3
+ require_relative '../../lib/robust_excel_ole'
4
+ require_relative '../../spec/helpers/create_temporary_dir'
5
5
  require "fileutils"
6
6
 
7
7
  include RobustExcelOle
@@ -10,7 +10,7 @@ Excel.kill_all
10
10
  begin
11
11
  dir = create_tmpdir
12
12
  simple_file = dir + 'workbook.xls'
13
- book = Workbook.open(simple_file, :visible => true) # open a book, make Excel visible
13
+ book = Workbook.open(simple_file, :visible => true) # open a workbook, make Excel visible
14
14
  old_sheet = book.sheet(1)
15
15
  p "1st cell: #{old_sheet[1,1].Value}"
16
16
  sleep 2
@@ -21,7 +21,7 @@ begin
21
21
  new_sheet = book.sheet(1)
22
22
  p "1st cell: #{new_sheet[1,1].Value}"
23
23
  p "book saved" if book.Saved
24
- book.close # close the book
24
+ book.close # close the workbook
25
25
  ensure
26
26
  Excel.kill_all # close all workbooks, quit Excel application
27
27
  rm_tmp(dir)
@@ -4,10 +4,6 @@ module RobustExcelOle
4
4
 
5
5
  class Address < REOCommon
6
6
 
7
- # hack
8
- #@@row_letter = "Z"
9
- #@@col_letter = "S"
10
-
11
7
  def self.new(r1c1_letters)
12
8
  @@row_letter = r1c1_letters[0..0]
13
9
  @@col_letter = r1c1_letters[1..1]
@@ -67,15 +67,15 @@ module RobustExcelOle
67
67
  result
68
68
  end
69
69
 
70
+ # @private
70
71
  def consider_networkpaths(filename)
71
72
  network = WIN32OLE.new('WScript.Network')
72
73
  drives = network.enumnetworkdrives
73
74
  drive_letter, filename_after_drive_letter = filename.split(':')
75
+ found_filename = nil
74
76
  # if filename starts with a drive letter not c and this drive exists,
75
77
  # then if there is the corresponding host_share_path in the bookstore,
76
- # then take the corresponding workbooks
77
- # otherwise (there is an usual file path) find in the bookstore the workbooks of which filenames
78
- # ends with the latter part of the given filename (after the drive letter)
78
+ # then take the corresponding workbooks
79
79
  if drive_letter != 'c' && drive_letter != filename
80
80
  for i in 0 .. drives.Count-1
81
81
  next if i % 2 == 1
@@ -83,8 +83,7 @@ module RobustExcelOle
83
83
  hostname_share = drives.Item(i+1).gsub('\\','/').gsub('//','').downcase
84
84
  break
85
85
  end
86
- end
87
- found_filename = nil
86
+ end
88
87
  @filename2books.each do |stored_filename,_|
89
88
  if hostname_share && stored_filename
90
89
  if stored_filename[0] == '/'
@@ -95,8 +94,6 @@ module RobustExcelOle
95
94
  found_filename = stored_filename
96
95
  break
97
96
  end
98
- elsif found_filename.nil? && stored_filename.end_with?(filename_after_drive_letter)
99
- found_filename = stored_filename
100
97
  end
101
98
  end
102
99
  end
@@ -104,8 +101,6 @@ module RobustExcelOle
104
101
  # if filename starts with a host name and share, and this is an existing host name share path,
105
102
  # then if there are workbooks with the corresponding drive letter,
106
103
  # then take these workbooks,
107
- # otherwise (there is an usual file path) find in the bookstore the workbooks of which filenames
108
- # ends with the latter part of the given filename (after the drive letter)
109
104
  index_hostname = filename[1,filename.length].index('/')+2
110
105
  index_hostname_share = filename[index_hostname,filename.length].index('/')
111
106
  hostname_share_in_filename = filename[1,index_hostname+index_hostname_share-1]
@@ -126,29 +121,10 @@ module RobustExcelOle
126
121
  if drive_letter && stored_filename.start_with?(drive_letter.downcase) && stored_filename.end_with?(filename_after_hostname_share)
127
122
  found_filename = stored_filename
128
123
  break
129
- elsif found_filename.nil? && stored_filename.end_with?(filename_after_hostname_share)
130
- found_filename = stored_filename
131
124
  end
132
125
  end
133
126
  end
134
127
  end
135
- else
136
- # if filename is an usual file path,
137
- # then find in the bookstore a workbook of which filename starts with
138
- # a drive letter or a host name
139
- @filename2books.each do |stored_filename,_|
140
- drive_letter, _ = stored_filename.split(':')
141
- stored_filename_end = if drive_letter != stored_filename && drive_letter != 'c'
142
- stored_filename[stored_filename.index(':')+1,stored_filename.length]
143
- elsif stored_filename[0] == '/'
144
- index_after_hostname = stored_filename[1,stored_filename.length].index('/')
145
- stored_filename[index_after_hostname+1, stored_filename.length]
146
- end
147
- if stored_filename_end && filename.end_with?(stored_filename_end)
148
- found_filename = stored_filename
149
- break
150
- end
151
- end
152
128
  end
153
129
  @filename2books[found_filename]
154
130
  end
@@ -16,7 +16,7 @@ module RobustExcelOle
16
16
 
17
17
  class Excel < RangeOwners
18
18
  attr_accessor :ole_excel
19
- attr_accessor :created
19
+ #attr_accessor :created
20
20
  attr_accessor :workbook
21
21
 
22
22
  # setter methods are implemented below
@@ -78,13 +78,13 @@ module RobustExcelOle
78
78
  #ole_xl = current_excel if options[:reuse] == true
79
79
  if options[:reuse] == true && ole_xl.nil?
80
80
  ole_xl = if RUBY_PLATFORM =~ /java/
81
- excel_instance = known_excel_instance if excel_instance.nil?
81
+ excel_instance = known_excel_instance
82
82
  excel_instance.ole_excel unless excel_instance.nil?
83
83
  else
84
84
  current_excel
85
85
  end
86
86
  end
87
- connected = (not ole_xl.nil?)
87
+ connected = (not ole_xl.nil?) && win32ole_excel.nil?
88
88
  ole_xl ||= WIN32OLE.new('Excel.Application')
89
89
  hwnd = ole_xl.HWnd
90
90
  stored = hwnd2excel(hwnd)
@@ -97,18 +97,15 @@ module RobustExcelOle
97
97
  @@hwnd2excel[hwnd] = WeakRef.new(result)
98
98
  end
99
99
 
100
- unless options.is_a? WIN32OLE
101
- begin
102
- reused = options[:reuse] && stored && stored.alive?
103
- if (not reused) && (not connected)
104
- options = { :displayalerts => :if_visible, :visible => false, :screenupdating => true }.merge(options)
105
- end
106
- result.visible = options[:visible] unless options[:visible].nil?
107
- result.displayalerts = options[:displayalerts] unless options[:displayalerts].nil?
108
- result.calculation = options[:calculation] unless options[:calculation].nil?
109
- result.screenupdating = options[:screenupdating] unless options[:screenupdating].nil?
110
- result.created = !reused
100
+ begin
101
+ reused = options[:reuse] && stored && stored.alive?
102
+ unless reused || connected
103
+ options = { :displayalerts => :if_visible, :visible => false, :screenupdating => true }.merge(options)
111
104
  end
105
+ result.visible = options[:visible] unless options[:visible].nil?
106
+ result.displayalerts = options[:displayalerts] unless options[:displayalerts].nil?
107
+ result.calculation = options[:calculation] unless options[:calculation].nil?
108
+ result.screenupdating = options[:screenupdating] unless options[:screenupdating].nil?
112
109
  end
113
110
  result
114
111
  end
@@ -246,8 +243,8 @@ module RobustExcelOle
246
243
  end
247
244
  begin
248
245
  @ole_excel.Workbooks.Close
249
- rescue WIN32OLERuntimeError => msg
250
- if msg.message =~ /800A03EC/
246
+ rescue
247
+ if $!.message =~ /kann nicht zugeordnet werden/ or $!.message =~ /800A03EC/
251
248
  raise ExcelREOError, 'user canceled or runtime error'
252
249
  else
253
250
  raise UnexpectedREOError, "unknown WIN32OLERuntimeError: #{msg.message}"
@@ -658,11 +655,6 @@ module RobustExcelOle
658
655
  ole_workbooks.each do |ow|
659
656
  wb = workbook_class.new(ow, opts)
660
657
  block_given? ? (yield wb) : wb
661
- #if block_given?
662
- # yield workbook_class.new(ow, opts)
663
- #else
664
- # workbook_class.new(ow, opts)
665
- #end
666
658
  end
667
659
  end
668
660
 
@@ -694,7 +686,10 @@ module RobustExcelOle
694
686
  # @param [String] name the name of the range
695
687
  # @param [Variant] value the contents of the range
696
688
  def []=(name, value)
697
- set_namevalue_glob(name,value, :color => 42) # 42 - aqua-marin, 7-green
689
+ old_color_if_modified = workbook.color_if_modified
690
+ workbook.color_if_modified = 42 unless workbook.nil? # aqua-marin
691
+ set_namevalue_glob(name,value)
692
+ workbook.color_if_modified = old_color_if_modified
698
693
  end
699
694
 
700
695
  # @private
@@ -6,7 +6,7 @@ module General
6
6
  def absolute_path(file)
7
7
  file = File.expand_path(file)
8
8
  file = RobustExcelOle::Cygwin.cygpath('-w', file) if RUBY_PLATFORM =~ /cygwin/
9
- WIN32OLE.new('Scripting.FileSystemObject').GetAbsolutePathName(file)
9
+ WIN32OLE.new('Scripting.FileSystemObject').GetAbsolutePathName(file).tr('/','\\')
10
10
  end
11
11
 
12
12
  # @private
@@ -64,33 +64,26 @@ end
64
64
 
65
65
  # @private
66
66
  class WIN32OLE
67
+
68
+ include RobustExcelOle
67
69
 
68
70
  # promoting WIN32OLE objects to RobustExcelOle objects
69
71
  def to_reo
70
- begin
71
- self.Hwnd
72
- RobustExcelOle::Excel.new(self)
73
- rescue
72
+ class2method = [{Excel => :Hwnd}, {Workbook => :FullName}, {Worksheet => :Copy}, {Range => :Address}]
73
+ class2method.each do |element|
74
+ classname = element.first.first
75
+ method = element.first.last
74
76
  begin
75
- self.FullName
76
- RobustExcelOle::Workbook.new(self)
77
+ self.send(method)
78
+ return classname.new(self)
77
79
  rescue
78
- begin
79
- self.Copy
80
- RobustExcelOle::Worksheet.new(self)
81
- rescue
82
- begin
83
- self.Address
84
- RobustExcelOle::Range.new(self)
85
- rescue
86
- self
87
- end
88
- end
80
+ next
89
81
  end
90
82
  end
91
83
  end
92
84
  end
93
85
 
86
+
94
87
  # @private
95
88
  class ::String
96
89
  def / path_part
@@ -61,18 +61,16 @@ module RobustExcelOle
61
61
  # sets the contents of a range
62
62
  # @param [String] name the name of a range
63
63
  # @param [Variant] value the contents of the range
64
- # @param [FixNum] color the color when setting a value
65
- # @param [Hash] opts :color [FixNum] the color when setting the contents
66
- def set_namevalue_glob(name, value, opts = { :color => 0 })
64
+ def set_namevalue_glob(name, value, opts = { }) # opts is deprecated
67
65
  begin
68
66
  name_obj = begin
69
67
  name_object(name)
70
68
  rescue NameNotFound => msg
71
69
  raise
72
- end
70
+ end
73
71
  ole_range = name_object(name).RefersToRange
74
- ole_range.Interior.ColorIndex = opts[:color]
75
- workbook.modified_cells << ole_range if workbook # unless cell_modified?(cell)
72
+ workbook.color_if_modified = opts[:color] unless opts[:color].nil?
73
+ ole_range.Interior.ColorIndex = workbook.color_if_modified unless workbook.color_if_modified.nil?
76
74
  if RUBY_PLATFORM !~ /java/
77
75
  ole_range.Value = value
78
76
  else
@@ -128,19 +126,17 @@ module RobustExcelOle
128
126
 
129
127
  # assigns a value to a range given a locally defined name
130
128
  # @param [String] name the name of a range
131
- # @param [Variant] value the assigned value
132
- # @param [Hash] opts :color [FixNum] the color when setting the contents
133
- def set_namevalue(name, value, opts = { :color => 0 })
129
+ # @param [Variant] value the assigned value
130
+ def set_namevalue(name, value, opts = { }) # opts is deprecated
134
131
  begin
135
- return set_namevalue_glob(name, value, opts) if self.is_a?(Workbook)
132
+ return set_namevalue_glob(name, value, opts) if self.is_a?(Workbook) # opts deprecated
136
133
  ole_range = self.Range(name)
137
134
  rescue # WIN32OLERuntimeError
138
135
  raise NameNotFound, "name #{name.inspect} not in #{self.inspect}"
139
136
  end
140
137
  begin
141
- ole_range.Interior.ColorIndex = opts[:color]
142
- workbook.modified_cells << ole_range if workbook # unless cell_modified?(range)
143
- #range.Value = value
138
+ workbook.color_if_modified = opts[:color] unless opts[:color].nil?
139
+ ole_range.Interior.ColorIndex = workbook.color_if_modified unless workbook.color_if_modified.nil?
144
140
  if RUBY_PLATFORM !~ /java/
145
141
  ole_range.Value = value
146
142
  else
@@ -164,8 +160,8 @@ module RobustExcelOle
164
160
  end
165
161
 
166
162
  # @private
167
- def set_nameval(name, value, opts = { :color => 0 }) # :deprecated: #
168
- set_namevalue_glob(name, value, opts)
163
+ def set_nameval(name, value) # :deprecated: #
164
+ set_namevalue_glob(name, value)
169
165
  end
170
166
 
171
167
  # @private
@@ -174,8 +170,8 @@ module RobustExcelOle
174
170
  end
175
171
 
176
172
  # @private
177
- def set_rangeval(name, value, opts = { :color => 0 }) # :deprecated: #
178
- set_namevalue(name, value, opts)
173
+ def set_rangeval(name, value) # :deprecated: #
174
+ set_namevalue(name, value)
179
175
  end
180
176
 
181
177
  # creates a range from a given defined name or address
@@ -195,10 +191,7 @@ module RobustExcelOle
195
191
  end
196
192
  if self.is_a?(Worksheet) && (range.nil? || (address2 != :__not_provided))
197
193
  address = name_or_address
198
- address = [name_or_address,address2] unless address2 == :__not_provided
199
- #self.Names.Add('Name' => '__dummy001', 'RefersToR1C1' => '=' + Address.r1c1(address))
200
- #not_given = WIN32OLE_VARIANT.new(nil, WIN32OLE::VARIANT::VT_NULL)
201
- #self.Names.Add('__dummy001',not_given,true,not_given,not_given,not_given,not_given,not_given,not_given,'=' + Address.r1c1(address))
194
+ address = [name_or_address,address2] unless address2 == :__not_provided
202
195
  self.Names.Add('__dummy001',nil,true,nil,nil,nil,nil,nil,nil,'=' + Address.r1c1(address))
203
196
  range = RobustExcelOle::Range.new(name_object('__dummy001').RefersToRange)
204
197
  self.Names.Item('__dummy001').Delete
@@ -222,10 +215,7 @@ module RobustExcelOle
222
215
  # @params [Address] address of the range
223
216
  def add_name(name, addr, addr_deprecated = :__not_provided)
224
217
  addr = [addr,addr_deprecated] unless addr_deprecated == :__not_provided
225
- begin
226
- #self.Names.Add('Name' => name, 'RefersToR1C1' => '=' + Address.r1c1(addr))
227
- #not_given = WIN32OLE_VARIANT.new(nil, WIN32OLE::VARIANT::VT_NULL)
228
- #self.Names.Add(name, not_given, true, not_given, not_given, not_given, not_given, not_given, not_given, '=' + Address.r1c1(addr))
218
+ begin
229
219
  self.Names.Add(name, nil, true, nil, nil, nil, nil, nil, nil, '=' + Address.r1c1(addr))
230
220
  rescue # WIN32OLERuntimeError => msg
231
221
  raise RangeNotEvaluatable, "cannot add name #{name.inspect} to range #{addr.inspect}"
@@ -243,12 +233,12 @@ module RobustExcelOle
243
233
  def rename_range(name, new_name)
244
234
  begin
245
235
  item = self.Names.Item(name)
246
- rescue WIN32OLERuntimeError
236
+ rescue # WIN32OLERuntimeError
247
237
  raise NameNotFound, "name #{name.inspect} not in #{File.basename(self.stored_filename).inspect}"
248
238
  end
249
239
  begin
250
240
  item.Name = new_name
251
- rescue WIN32OLERuntimeError
241
+ rescue # WIN32OLERuntimeError
252
242
  raise UnexpectedREOError, "name error in #{File.basename(self.stored_filename).inspect}"
253
243
  end
254
244
  end