
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
【マクロ】【画像あり】❶ブック...
-
Excelファイルをダブルクリック...
-
エクセルを共有するとPCによっ...
-
【マクロ】【画像あり】ファイ...
-
Excelでブックの共有を掛けると...
-
フォルダ内の複数ファイルから...
-
エクセルでウィンドウの枠固定...
-
エクセルで参照しているデータ...
-
Excel(2010)のフィルターが保...
-
WorkBooksをオープンさせずにシ...
-
ブックのピボットを別ブックに...
-
「ブックの共有」を有効にして...
-
指定ファィルの指定シートをシ...
-
参照したいブックのパス名に"["
-
VBA バックグラウンドで別ブッ...
-
Excelで複数ブックの同一セルに...
-
Excelの警告について
-
【マクロ】アクティブセルの時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】アクティブセルの時...
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルを共有するとPCによっ...
-
WorkBooksをオープンさせずにシ...
-
エクセルで参照しているデータ...
-
Excelファイルをダブルクリック...
-
Excelでブックの共有を掛けると...
-
「ブックの共有」を有効にして...
-
Excel(2010)のフィルターが保...
-
Excelの新しい空白のブックを開...
-
同じフォルダへのハイパーリン...
-
フォルダ内の複数ファイルから...
-
エクセルで別ブックをバックグ...
-
別ブックから入力規則でリスト...
-
ブックのピボットを別ブックに...
-
エクセルでウィンドウの枠固定...
-
エクセルにおける,「ブック」...
-
Excelで複数ブックの同一セルに...
-
Excelで指定範囲のデータ...
おすすめ情報