ハイパーリンク設定が有効にならない…

Ruby から win32ole で Excelファイルを弄り、ハイパーリンク設定をして保存するも、ハイパーリンクが有効にならない…ということで悩む。

今迄フツーに Hyperlinks.Add()でハイパーリンク設定できてたのに…

$xl = WIN32OLE.new("Excel.Application")
wb = $xl.Open(filename)
ws = wb.Worksheets.Item(1)
ws.Hyperlinks.Add(ws.Cells(1, 1),"http://www.yahoo.co.jp/")
wb.Save

調査して行くと、上記の様な単純なコードで失敗することがわかった。上記で保存したファイルを開くと、ちゃんと A1セルに"http://www.yahoo.co.jp/"が挿入されて、下線付青字、リンクっぽい表示になっているものの、クリックしても何も起きないし、右クリックでハイパーリンク設定を開くとリンク設定が空白。

…随分悩んだんだが、結局のところハイパーリンクが有効にならなかった理由は、単に、開いたファイルが Excel95形式だったから。

…脱力。

(1) Excel95形式はハイパーリンクをサポートしていない。
(2) 手動でハイパーリンク設定して、ファイルメニューから保存しようとした場合「最新のExcelの形式で保存しますか」云々と聞いてくれる。しかし、Wookbook.Save()で保存しようとした時はダイアログが出ず、ハイパーリンク設定を消して(しかしハイパーリンク風の文字装飾だけ残して)Excel95形式のまま保存しやがる。
(3) ハイパーリンク等が使用できる最新の Excel の形式で保存したければ、Workbook.SaveAs()を使用しなければならない。

ということらしい…

…しかし、誰だよ、Excel95の形式でファイルを保存したのは。