• 締切済み

表示倍率を変更させない方法

エクセルのマクロで、ユーザーに表示倍率の変更をさせない方法を教えて頂けないでしょうか。 シートのスクロールを制限して、シートの一部しかユーザーに見せたくないのですが、表示倍率を変更されたら簡単に見られてしまいます。 メニュー(エクセル2007ではリボン?)の操作を不可能にする方法もありますが、Ctrl+マウスのホイールで簡単に倍率変更できてしまいます。 シートの一部を非表示にして保護をしてしまえばいいのですが、その方法だと非表示の部分が空白であったとしてもそのエクセルファイルの容量が膨大に増えてしまいます。 できるだけ軽くしたいので、もしいい方法が分かる方がいらっしゃいましたら教えて下さい。エクセル2007を使用していますが、2003以前を前提にした方法でもいいです。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

VBAで色々WEB等調べて試行してみた。 (1)スクロールできる範囲を限定する Sub スクロール可能領域を設定する() シート名 = "Sheet1" Worksheets(シート名).ScrollArea = "A1:H30" End Sub 左上隅1画面に収まる範囲内ならその画面が固定されるようだ。 しかし質問にもある、表示のズームで縮小されるとより多いセル範囲の表示になる (2)メニューの「表示」ー「ズーム」を現れないようにする。 Sub test03() Dim x As Object Set x = Application.CommandBars("Worksheet Menu Bar").Controls(3) MsgBox x.Caption '--- MsgBox Application.CommandBars("Worksheet Menu Bar").Controls(3).Controls(11).Caption Application.CommandBars("Worksheet Menu Bar").Controls(3).Controls(11).Visible = True 'False End Sub 上記の3や11でやってみて、「ズーム」とMsgboxで出たら ).Visible = True を).Visible = Falseにすると、メニューから消える。 (3)マウスのスクロールボタンの拡大を働かなくする。 これは以前にも質問があったように思うが、VBAレベルでは出来ず、APIなどを使わないとならないのではないかと思う。 ーー 以下は私見だが 一般にエクセルは、表を作った人が、使う前提のソフトだと思う。使う人が別で、操作者に勝手な操作をさせないなどのニーズには対応が少ないと思う。別の特注ソフトとかDBソフトを使うべきケースと思う。 それをエクセルしか知らないユーザーが、この質問コーナーにあれもしたい・こうもしたいと、丸投げしている場合が結構有るが、エクセルインサイドのそこまで判る回答者は少ないと思うし、回答が難しいと思う。

sin215
質問者

補足

確かに回答できる者は少ないかもしれません。 おっしゃるとうりです。もう質問はしません。 これを見た人も、操作者に勝手な操作をさせないための質問はもうやめましょう。

  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.2

>非表示の部分が空白であったとしても >そのエクセルファイルの容量が膨大に増えてしまいます もしかして、VBAか何かで行(列)を【個別に】非表示にしているのでは? 私の環境(Excel2007)の場合、新規ワークブック(7.79KB)に対して、 4行目以降を【一括して】非表示にした場合は7.85KBだったのに対して、 4行目から10000行目までを【個別に】非表示にすると34.2KB になります。 さらに、下記のような無茶をすると、2.74MBにもなってしまいます。 (…という以前に処理自体にげんなりするほど時間がかかります) ↓「エレファント」な処理の例 Sub test()  '取り扱い注意 当分終わりません。  Application.ScreenUpdating = False  For i = 4 To Rows.Count   Rows(i).Hidden = True  Next i  Application.ScreenUpdating = True End Sub いずれにせよ、 非表示にするだけでサイズが極端に増えるというのは 正常な挙動ではありません。 以上ご参考まで。

sin215
質問者

補足

ありがとうございました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

> シートの一部を非表示にして保護をしてしまえばいいのですが、その方法だと非表示の部分が空白であったとしてもそのエクセルファイルの容量が膨大に増えてしまいます。 それ、ほんとう? わたしのは2000ですが、仮にシート1枚だけのBOOKを、31行以降の行をすべて非表示にしてパスワード保護をかけても 11.5KB ⇒ 12.5KB となっただけですよ。 メニュー操作を不可能にするくらいしかVBAで表示倍率を変更できなくする方法は存知ませんが、もしできたとしてもマクロを無効にされたら意味ないですよね?やはり行か列の非表示で対応したほうがいいんじゃないかなあ・・・。

sin215
質問者

補足

容量が増えるのは本当です。エクセル2000は久しく使ってないので分かりません。 確かにマクロを無効にされる可能性もありますが、隠しファイルにしてUWSCというプログラムからうまく起動できないか模索してます。(結局何をやっても知識がある人の前では意味がないでしょうけど・・・) 最終的には非表示で対応するかもしれませんが、あきらめる前にそういう技術を知っている方がいればお教え頂きたかったということです。 ご回答ありがとうございました。