No.4ベストアンサー
- 回答日時:
merlionXX さん、こんにちは。
Wendy02です。
>ところでサンプルコードでUnprotectする直前にもProtectをしているのは何故ですか?
それ自体は、あくまでも、Protect をして、Unprotect をするというのは、サンプルで作ったままでコードをアップしただけです。
ただし、理由は、以下のような流れからです。
今回は、関係ないかもしれませんが、xlSheetVeryHidden を使う場合に、前回、考えたのは以下のような手順です。
開いた時に、一旦、 Window プロテクトを解除して
シートの Visible = xlSheetVeryHidden
Window プロテクトにしてから、そのブックを保存して、
それから、次に、もう一度、Window プロテクトを解除して、
シートをVisible = xlSheetVisible
Window プロテクトをします。
ブックを閉じるときは、 Saved =True にさせてマクロ以外からは、保存させないようにします。ですから、BeforeSave イベントをCancel =True を置いておきます。
開いたままの状態では、保存をさせないのです。
Sheet のプロテクトの時に、
Application.EnableSelection = xlUnlockedCells
を使うわけですが、
画面キャプチャーやスナップショットなどで画面を取られないように、Win32 API の RegisterHotKeyで、フックさせないようにさせます。Excelでプロテクトを期待してもしょうがない、という人もいますが、ある程度のことは可能です。
もう、デジタルカメラをPC外で使われればしょうがないですが(^^;
ご丁寧にありがとうございました。
ActiveSheet.EnableSelection = xlUnlockedCellsはわたしもよく使いますが、「BeforeSave イベントをCancel =True 」これは勉強になりました。有難うございます!
No.3
- 回答日時:
こんにちは。
Wendy02です。>ただブック保護するのではなく手動での変更は×だけどVBAでの変更は○としたいんです。
それを、どのレベルまで求めるかだと思います。私が、以下の方法を使うのは、例えば、シートの非表示と表示をマクロで行うような場合になりますね。今のところ、この方法しか思いつきません。一般の人には、この方法で有効だと思います。
最初に BeforeClose の時に、Sheet をxlVeryHidden にしておくようにして、以下の方法で、Visible にします。
'-------------------------------------------
Sub MacroProtectTest1()
Application.ScreenUpdating = False
Application.Interactive = False
Const MYPASSWORD = "merlion"
With ActiveWorkbook
.Protect Password:=MYPASSWORD, Structure:=True, Windows:=True
.Unprotect MYPASSWORD
.Sheets(3).Visible = xlSheetVisible
.Protect Password:=MYPASSWORD, Structure:=True, Windows:=True
End With
Application.Interactive = True
Application.ScreenUpdating = True
End Sub
'-------------------------------------------
本来はなくてもよいのですが、万が一を考えて、Application.Interactive =False で、マクロが動いている最中に、止めることは不可能ですから、そこで、割り込みは利きませんね。
Wendy02さん、いつもお世話様です。
やはり一旦Unprotectしなきゃいけないんですね。
そこで強制的にマクロを止められたり何らかの事情で止ることを怖れての質問だったのですがApplication.Interactive =False という新しい「呪文」で解決しました。ありがとうございました。
ところでサンプルコードでUnprotectする直前にもProtectをしているのは何故ですか?
No.1
- 回答日時:
あまり自信ではありませんが・・・
マクロの自動記録をしてみました
ActiveWorkbook.Protect Structure:=True, Windows:=False
さっそく有難うございます。
ActiveWorkbook.Protect Structure:=True, Windows:=Falseってただのブック保護ですよね。
ただブック保護するのではなく手動での変更は×だけどVBAでの変更は○としたいんです。シート保護ならUserInterfaceOnly:=Trueでそう出来るのですが・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでシートの保護をかける際に「書式設定の変更」を有効にする 1 2023/04/17 18:18
- Visual Basic(VBA) ExcelVBA ドロップボックスで月を選択するとそれ以降のデータが残るようにしたい。 3 2022/12/16 14:53
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- その他(Microsoft Office) エクセル VBAについて 2 2022/09/21 22:21
- Visual Basic(VBA) Excel VBAのデバッグ 8 2022/12/13 16:08
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
ActiveSheet.Protect UserInterfaceOnly:=Trueの書き場所は
Excel(エクセル)
-
【エクセルVBA】「Protect UserInterfaceOnly」を2重にかけてはダメですか?
Visual Basic(VBA)
-
【Excel】他ブックからOpenされたブックはUserInterfaceOnlyが効かない?
その他(Microsoft Office)
-
-
4
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
5
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
6
Excelでシートを保護してもマクロが使えるようにしたい
Excel(エクセル)
-
7
すでにコピーした情報を貼り付けたらイベントを発生
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel起動時に特定のワークシー...
-
VBAでブックを非表示で開いて処...
-
エクセルを共有するとPCによっ...
-
エクセルで「ディスクがいっぱ...
-
エクセルで参照しているデータ...
-
フォルダ内ブックの数式を全て...
-
Excelで複数ブックの同一セルに...
-
エクセルの関数 ENTERを押...
-
外部ブック参照が#REF!になって...
-
Excelで指定範囲のデータ...
-
【マクロ】【VBA】別ブックへの...
-
Excelでブックの共有を掛けると...
-
WorkBooksをオープンさせずにシ...
-
フォルダ内の複数ブック・シー...
-
VBAでブック保護非保護を判定す...
-
Excelファイルを開いても何も表...
-
ブックを開いた時にいつも同じ...
-
エクセルVBAでブック保護のUser...
-
フォルダ内の複数ファイルから...
-
VBAマクロで作成した新規ブック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
VBAでブックを非表示で開いて処...
-
エクセルの関数 ENTERを押...
-
エクセルで参照しているデータ...
-
WorkBooksをオープンさせずにシ...
-
(マクロ)vlookupの元データを同...
-
Excelでブックの共有を掛けると...
-
Excel(2010)のフィルターが保...
-
エクセルで「ディスクがいっぱ...
-
Excelで複数ブックの同一セルに...
-
複数ファイルから特定シートの...
-
エクセルで別ブックをバックグ...
-
エクセルでウィンドウの枠固定...
-
Excelファイルをダブルクリック...
-
フォルダ内の複数ファイルから...
-
エクセルファイルを開かずにpdf...
-
外部ブック参照が#REF!になって...
-
エクセルで複数のシートを別フ...
-
エクセルシートの一部を送りたい
-
エクセルで50行ごとに区切った...
おすすめ情報