次のコードで ruby と win32ole を使用して長めのワークシート名を設定しようとすると、
require "win32ole"
excel = WIN32OLE.new('Excel.Application')
excel.Visible = 1
puts excel.version
workbook = excel.Workbooks.Add
worksheet1 = workbook.Worksheets.Add
worksheet1.Name = "Pseudopseudohypoparathyroidism" #Length 30, fine
worksheet2 = workbook.Worksheets.Add
worksheet2.Name = "Supercalifragilisticexpialidocious" #Length 34, not fine
次のような結果が出ます:
12.0
-:9:in `method_missing': (in setting property `Name': ) (WIN32OLERuntimeError)
OLE error code:800A03EC in Microsoft Office Excel
You typed an invalid name for a sheet or chart. Make sure that:
The name that you type does not exceed 31 characters.
The name does not contain any of the following characters: : \ / ? * [ or ]
You did not leave the name blank.
HRESULT error code:0x80020009
Exception occurred.
from -:9:in `<main>'
バージョン12.0はExcel 2007を実行していることを示していますが、ワークシート名が長すぎるというエラーが表示されます。Excel 2007 の仕様と制限前述の通りこの関連する回答、そのような制限について言及しているものは見つかりませんでした。(ただし、ワークシートの名前を手動で変更しようとすると、そのような制限がある可能性があります)
制限はありますか? それはハード制限ですか、それとも Excel の設定を変更することで変更できる制限ですか?
ベストアンサー1
ファイル形式では、最大 255 文字のワークシート名が許可されますが、Excel UI で 31 文字を超えることが許可されていない場合は、31 文字を超えないようにしてください。アプリには、文書化されていない奇妙な制限や癖が満載で、仕様の範囲内であっても、テスターがテストした範囲内ではないファイルを入力すると、通常、非常に奇妙な動作が発生します。(個人的なお気に入りの例: Excel 97 スタイルの文字列テーブルを含むファイルで、if() 関数に Excel 4.0 バイトコードを使用すると、Excel 97 の太字のツール バー ボタンが無効になります。)