Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2426 / 13645 ツリー ←次へ | 前へ→

【68099】VBAでのパスワード付きシート保護について S.Satoh 11/2/1(火) 12:12 質問[未読]
【68100】Re:VBAでのパスワード付きシート保護につい... UO3 11/2/1(火) 13:17 発言[未読]
【68102】お礼■Re:VBAでのパスワード付きシート保護... S.Satoh 11/2/1(火) 13:41 お礼[未読]

【68099】VBAでのパスワード付きシート保護について
質問  S.Satoh  - 11/2/1(火) 12:12 -

引用なし
パスワード
    すみません、ご教授いただきたく存じます。

 ある業務用ブックのVBAにて、

Activesheet.Protect passward = ("hoge")

という記述に出会いました。

 詳しい方はすぐお分かりと思いますが、記述間違いがあり、
1.『Password』、と正しく記述していない
2.引数を『:="hoge"』と記述していない
だと思います。

 しかし、このメソッドはこのままで実行され、また、

Activesheet.Unprotect passward = ("hogehoge")

にて解除されてしまいます。


 お尋ねしたいことは、
『上記の時、どのように解釈されているのでしょうか?
 また、手動で解除(パスワードを入力して)することは
 できるのでしょうか?』
ということです。


 もしお分かりの方がおられましたら、
何卒よろしくお願いいたします。


 S.satoh

【68100】Re:VBAでのパスワード付きシート保護につ...
発言  UO3  - 11/2/1(火) 13:17 -

引用なし
パスワード
   ▼S.Satoh さん:

こんにちは

想像ですが、おそらく、このモジュールには Option Explicitがないと思われます。
もしあれば、変数としてのpasswardの宣言がないのでコンパイルエラーになります。

Option Explicitがないので、変数passwardが、その場で生成されます。
で、ActiveSheet.Protect Password:="AAAA" は
ActiveSheet.Protect "AAAA" ともかくことができます。

ActiveSheet.Protect passward = ("hoge")

この passward = ("hoge") が "AAAA" にあたります。
では passward = ("hoge") とはなんでしょう?
これは文字列比較をしています。比較結果はアンマッチですから False となります。
従って パスワードの値として False を設定していることになります。

解除のときも
Activesheet.Unprotect passward = ("hogehoge")
つまり False で解除しているわけですね。

この False は入力できないと思いますので解除は手動では無理でしょうね。

【68102】お礼■Re:VBAでのパスワード付きシート保...
お礼  S.Satoh  - 11/2/1(火) 13:41 -

引用なし
パスワード
   ▼UO3 様:

>おそらく、このモジュールには Option Explicitがないと思われます。

 すみません、前置きすべきでした。その通りです。


>Option Explicitがないので、変数passwardが、その場で生成されます。
>では passward = ("hoge") とはなんでしょう?
>これは文字列比較をしています。
>比較結果はアンマッチですから False となります。

>この False は入力できないと思いますので解除は手動では無理でしょうね。

 疑問点に的確なご返信、とてもよくわかりました。
素早く回答が得られ、仕事が進めることができそうです。

 本当にありがとうございました。
また機会がありましたら、何卒よろしくお願いいたします。


 S.Satoh

2426 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free