Excel2010でActiveXコンポーネントが小さくなっちゃう現象

 お客様のところで教えていただいた、Excel2010での不思議な現象。
シンプルな再現性を確保できたので、紹介しておきます。

現象概要

 シート上に ActiveX コンポーネント(ボタンやテキストボックスなど)を配置して、ある条件で印刷プレビューをすると、ボタンが小さくなってしまう。

再現方法

(1)Excel 2010 で新しい「空白のブック」を作成します(保存する必要は、なし)
(2)シート上に、ActiveXコンポーネントを配置します。ここではわかりやすいように、セル3つぶんの幅を持つボタンと、2つぶんの幅を持つテキストボックスを配置してみました。
(3)セルに適当な長さの文字を適当に書き込みます。ポイントは、印刷時に1ページに収まらないようにすることです。ここでは「あいうえおかきくけこさし」を6個のセルに書き込んでセル幅調整をしました。


(4)印刷プレビューをして、ページ設定から「1x1サイズに合わせて印刷」の指定をします。


(5)Sheet1 と Sheet2 を選択状態にして、Sheet2側をアクティブにしておきます。


(6)印刷プレビューをします。
(7)プレビューから戻って、Sheet1を見ると、あら不思議。ボタンたちが小さくなってしまいました。



追加情報

 この「小さくなる」現象は、表示処理のみで起こっているようです。再描画を行わせるような操作を行うと、元のサイズに戻ります。
 再描画をさせる操作の例:
・大きく、下のほうまでスクロールしてから、戻ってくる。ほんのちょっと画面から出た程度だと、バッファに乗っているせいか、再描画されません。
・表示ズームを変える。右下のスライダーなので、100%となっている表示を+−したりすると、再描画が走ります。
・ビューの方式を変える。改ページプレビューなどに切り替えると、再描画が走ります。
・Sheet1だけで、もういちど印刷プレビューをしてみる。
・シート内のセル幅や高さなどを変更する


 また、コンポーネントが小さくなった状態で、ファイルの保存を行うと、小さくなったものが確定状態として保存されてしまうようです。描画上の問題だけならまだしも、これは結構危険ですね。


 なお、この「小さくなる」現象は、コンポーネントを「グループ化」すると発生しなくなります。こういったコンポーネントを配置したものを作り、また提供する際には、「とりあえずグループ化しておく」ことが、無難かつ現実的な対応方法になるのではないかと思います。変なノウハウですが。


.