- 締切済み
エクセル97 フォームシートの保護をする時に出る"パスワード"をコード化させたい
「表示-ツール-フォーム」でボタンを作りました。 そして、マクロの自動登録で「シートの保護」を選び「パスワード:password」を設定し、更に「password」で保護解除をし、マクロ記録終了。 そして、各コードを「シートの保護」:ボタン3、「シートの解除」:ボタン2、に設定しました。 それらを実行させてみたのですが、特に「パスワード:password」を聞かれることなく一連の作業が終了してしまいました。 コードは以下のとおりです。 Sub ボタン2_Click() ' ' ボタン2_Click Macro ' マクロ記録日 : 2004/2/9 ユーザー名 : **** ' ActiveSheet.Unprotect End Sub -------------------------- Sub ボタン3_Click() ' ' ボタン3_Click Macro ' マクロ記録日 : 2004/2/9 ユーザー名 : **** ' ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub そこで、各ボタンのクリック時に、パスワードを聞いてきてくれるコードを書き加えたいのです。 わかる方がいらっしゃいましたら、是非教えてください!! コードに関して素人ですので、できたら、全体を通してコードを教えて頂ければ助かります。 いろいろ探してみたのですが、ギブアップです。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- papayuka
- ベストアンサー率45% (1388/3066)
#1です。 > ファイルを開いた時に"パスの入力欄" 先の回答にも書きましたが、「名前を付けて保存」のオプションで書き込みパスを設定出来ます。 これは当然開いた時にパスを聞いてきます。 共有云々でないなら、似たような事をマクロでやった事はありますが、マクロ無効で開いた時の対策も必要になり、複雑になります。 大体こんな感じの処理 1.マクロ無効で開いた時用の「表紙」シートを作っておき、ブックを保護する。 2.マクロ有効で開いた場合は、Auto_Openを使いInputboxを出す。 3.保存しておいたパスとマッチさせ、OKなら「表紙」を隠して、データシートを表示する。
- papayuka
- ベストアンサー率45% (1388/3066)
#1です。 ブックの共有をした事が無いので、共有の詳細は解かりませんが、ヘルプで「共有ブック, 使用できない機能」を調べると、そもそもパスワードの設定、変更、削除自体が出来ないとあります。更に、マクロやオブジェクトの挿入、削除も制限があるようです。 開けるけど、編集は何らかの制御をしたいって事だとは思いますが、いま1つ実現したい事が理解出来ません。 単純に最初に保存する時に「名前を付けて保存」のオプションで、読み取りパスワードや書き込みパスワードを設定して、書き込みを許可する人に教えておくとかではダメなのでしょうか? どうしてもマクロで保存を制御したいなら、Thisworkbook の BeforeSave をこんな感じにして保存時にパスを聞くとか。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim msgResult Cancel = True msgResult = Application.InputBox("書込みパスは?", "書込み", Type:=2) If msgResult = "SAVEOK" Then Cancel = False End Sub 但し、マクロを使う場合は「マクロを無効」で開かれたらどうにもなりませんよ。
- 参考URL:
- #1です。
補足
ブックの共有化については、了解です。 回答No.2ですが、できればファイルを開いた時に動作をさせたいかと・・・ 質問内容がわかりづらくてすみません。 イメージはこんなかんじです。 1.ファイルを開いた時に"パスの入力欄""書き込みボタン""参照ボタン"があるメッセージボックスを表示させる。…(a) 又、サブタイトルか何かに"「書き込みパスを入力するか、参照ボタンをクリックして下さい。」"というようなコメントがついたら解かり易いかと思います。 2.パスを入力してがokだったら、書きこみができる状態で開く。 パスが違っていたら、「パスが違います。正しいパスを入力してください。」というメッセージが出て、再度a.のメッセージを表示させるようにする。 参照ボタンで開いた場合には、書きこみが出来ない状態で開く(参照だけを目的に開く)。 いかがでしょう...実現できそうですか? 専門用語をわかっておらず、素人用語になってしまっていたらご容赦ください。 宜しくお願い致します。
- papayuka
- ベストアンサー率45% (1388/3066)
意図した回答になっているか解かりませんが、、、 Sub ボタン1_Click() On Error Resume Next Application.Dialogs(xlDialogProtectDocument).Show End Sub これでボタン1つで設定も解除も出来ますけど、意味が違いますか?
補足
ご回答ありがとうございました。 わかりやすく書いていただいて、すぐに操作できました。 ところが、実際にやってみたところ、更に問題発生してしまいました。 このボタンをつけたファイルを同時編集できるようにしたくて「ブックの共有化」をさせようとしたら、このボタンを作ることができませんでした。 (一部では閲覧のみ、一部では同時編集ができるようにしたい) ということで、再度お聞きします。 いづれかの以下のような設定ができたらよいのですが・・・ 1.「同時編集」ができ、「保護するボタン」と「保護解除のボタン」をわけて設定する 2.「書き込み許可するパスワード付ボタン」と、「書き込み完了(=書き込み不可)するボタン」をわけて設定する 3.或いは「同時編集」ができ、「書き込み許可するパスワード付ボタン」を設定し、ファイル保存をしたら、常に「書き込み不可状態」になる もしくは、papayukaさんの発想でよい方法がありましたら、教えて頂ければと。。。 図々しいお願いですみませんが、宜しくお願い致します。
補足
お世話になります。 >「名前を付けて保存」のオプションで書き込みパスを設定出来ます。 はい、おっしゃる通りです。 ただ、これを設定して、ファイルを上書き保存等で閉じようとする時「上書きできないので、別名保存してください」というメッセージが出ます。 それが煩わしいかと思い、何か方法があればと思いました。 時間もないので、今回はオプションでパスを設定します。 1~3の処理に挑戦しましたが、コードの勉強からやらねば・・・というかんじです。 回答内容を参考にさせていただきます。 ありがとうございました。