
エクセルのマクロで、ユーザーに表示倍率の変更をさせない方法を教えて頂けないでしょうか。
シートのスクロールを制限して、シートの一部しかユーザーに見せたくないのですが、表示倍率を変更されたら簡単に見られてしまいます。
メニュー(エクセル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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【エクセル】COUNTIFの検索条件が可変する数字の場合の数式 1 2022/09/27 15:34
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行して 作業フォルダの中にある PDFファイル名を 3 2023/07/01 15:16
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Excel(エクセル) Aフォルダにあるエクセルの表をBフォルダへ映したい【表題じだけする】 2 2023/08/24 06:41
- JavaScript 指定時間になったら、WEBサイトの更新を自動で行うには…? 3 2022/04/28 22:14
- Excel(エクセル) シート名を簡単に書く方法があれば教えてください。 4 2023/08/24 12:40
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 4 2023/05/26 10:43
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでエクセルシートを更新...
-
excelで、セル内に文字が入力さ...
-
エクセル表作成についてお分か...
-
筆王への住所録データ取り込み...
-
エクセルの担当者別にシートを...
-
エクセルのシートを同時に行削...
-
エクセルのマクロ。 お世話にな...
-
マクロボタンを押すと、ファイ...
-
「24日の0時」って・・・
-
日付の大小の表現
-
エクセルで最高値、最低値の日...
-
エクセル マクロ 名前を付けて...
-
回覧板の日付について質問です...
-
「時間」、「期日」、「日付」...
-
エクセルで数字から名前に変...
-
Excel関数 「日付を入力...
-
エクセルのチェックボックスを...
-
SQL2008での年度の取得方法
-
エクセル 条件が成立した場合...
-
ACCESSで日付ごとに自動連番(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでエクセルシートを更新...
-
excelで、セル内に文字が入力さ...
-
エクセルのシートを同時に行削...
-
【エクセル】シートのロックで...
-
表示倍率を変更させない方法
-
エクセルシートの統合
-
エクセルで、2つのシートにある...
-
エクセルVBAで65536レコードを...
-
STAT VIEWが使えない!!!
-
Excelで、表に小計と合計を入れ...
-
表の値を別の表にコピー
-
エクセルで別シート、または別...
-
エクセルの担当者別にシートを...
-
同一セルに入力規則のリストと...
-
エクセルでの検索について
-
エクセル表作成についてお分か...
-
エクセルVBAの文字列の部分一致...
-
シートを串刺しで抽出したいの...
-
「エクセル2007」のシートの行...
-
エクセルシートのPPTへの挿入....
おすすめ情報