
エクセルのマクロで、ユーザーに表示倍率の変更をさせない方法を教えて頂けないでしょうか。
シートのスクロールを制限して、シートの一部しかユーザーに見せたくないのですが、表示倍率を変更されたら簡単に見られてしまいます。
メニュー(エクセル2007ではリボン?)の操作を不可能にする方法もありますが、Ctrl+マウスのホイールで簡単に倍率変更できてしまいます。
シートの一部を非表示にして保護をしてしまえばいいのですが、その方法だと非表示の部分が空白であったとしてもそのエクセルファイルの容量が膨大に増えてしまいます。
できるだけ軽くしたいので、もしいい方法が分かる方がいらっしゃいましたら教えて下さい。エクセル2007を使用していますが、2003以前を前提にした方法でもいいです。
A 回答 (3件)
- 最新から表示
- 回答順に表示
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ソフトを使うべきケースと思う。
それをエクセルしか知らないユーザーが、この質問コーナーにあれもしたい・こうもしたいと、丸投げしている場合が結構有るが、エクセルインサイドのそこまで判る回答者は少ないと思うし、回答が難しいと思う。
この回答への補足
確かに回答できる者は少ないかもしれません。
おっしゃるとうりです。もう質問はしません。
これを見た人も、操作者に勝手な操作をさせないための質問はもうやめましょう。
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
いずれにせよ、
非表示にするだけでサイズが極端に増えるというのは
正常な挙動ではありません。
以上ご参考まで。
No.1
- 回答日時:
> シートの一部を非表示にして保護をしてしまえばいいのですが、その方法だと非表示の部分が空白であったとしてもそのエクセルファイルの容量が膨大に増えてしまいます。
それ、ほんとう?
わたしのは2000ですが、仮にシート1枚だけのBOOKを、31行以降の行をすべて非表示にしてパスワード保護をかけても 11.5KB ⇒ 12.5KB となっただけですよ。
メニュー操作を不可能にするくらいしかVBAで表示倍率を変更できなくする方法は存知ませんが、もしできたとしてもマクロを無効にされたら意味ないですよね?やはり行か列の非表示で対応したほうがいいんじゃないかなあ・・・。
この回答への補足
容量が増えるのは本当です。エクセル2000は久しく使ってないので分かりません。
確かにマクロを無効にされる可能性もありますが、隠しファイルにしてUWSCというプログラムからうまく起動できないか模索してます。(結局何をやっても知識がある人の前では意味がないでしょうけど・・・)
最終的には非表示で対応するかもしれませんが、あきらめる前にそういう技術を知っている方がいればお教え頂きたかったということです。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでエクセルシートを更新...
-
excelで、セル内に文字が入力さ...
-
エクセルのシートを同時に行削...
-
Excelのマクロで、開いた時に、...
-
エクセル◎○の人は、一つ昇格し...
-
差し込み印刷に当日の日付が入...
-
「24日の0時」って・・・
-
エクセルのチェックボックスを...
-
エクセルで数字から名前に変...
-
回覧板の日付について質問です...
-
日付の大小の表現
-
折り返して表示、縮小して表示...
-
ピボットテーブルの日付フィル...
-
エクセルで最高値、最低値の日...
-
エクセルでのNULLという文字列...
-
Excelについて
-
「時間」、「期日」、「日付」...
-
エクセルで在庫表を作りたい
-
EXCELで日付を****年上期、****...
-
上付き文字を別セルにそのまま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでエクセルシートを更新...
-
excelで、セル内に文字が入力さ...
-
エクセルのシートを同時に行削...
-
【エクセル】シートのロックで...
-
表示倍率を変更させない方法
-
EXCELの表の抽出方法
-
エクセルの担当者別にシートを...
-
エクセル表作成についてお分か...
-
エクセルの日付関数について
-
Excel VBA 条件検索による文字...
-
エクセルシート内データの保護
-
ファイナンシャルプランナーの...
-
エクセルで、2つのシートにある...
-
エクセルVBAでデータ検索について
-
同一セルに入力規則のリストと...
-
Excelで、表に小計と合計を入れ...
-
シートを串刺しで抽出したいの...
-
エクセルVBAの文字列の部分一致...
-
ワードの差し込み印刷について
-
「24日の0時」って・・・
おすすめ情報