• ベストアンサー

エクセルシートの保護解除をマクロボタンで

エクセル2010で、シートを編集する前には必ずマクロボタン[編集開始]を押さないと編集出来ない様にしたいのですが何か方法が無いでしょうか? パスワードの入力画面が出ると言うような感じでも、他の方法でも良いので宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.4

>シートに保護するコードを教えていただけませんか? こんなカンジです。  Dim ws As Worksheet  For Each ws In ThisWorkbook.Worksheets   ws.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _    Password:="1234"  Next ws

akira0723
質問者

お礼

何回もの丁寧なご回答ありがとうございます。 上記は簡単なので出来そうですが、別の要求も出てきており(複数の人の要求が後から追加されるので最初の設計が甘いと反省)少し、別の仕事にかかりきりになりますので、一旦閉めさせていただきますが、再開示には見捨てないで是非宜しくお願いします。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

#2です。 https://excel-ubara.com/excelvba4/EXCEL240.html ブックを閉じる時に自動実行(Workbook_BeforeCloseとAuo_Close) を参考にされては。

akira0723
質問者

お礼

有り難うございます。 参考になりました。

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.3

この処理をマクロで実現すると、かならず拡張子が.xlsmになり 「マクロ付き」で保存しないと次に実行できなくなります。 色々制限がきついんですよ、マクロって。 なので、素直に「シートにパスワードを掛ける」だけにして 置いた方が正解だと思うんですけどね。 https://121ware.com/qasearch/1007/app/servlet/qadoc?QID=010451

akira0723
質問者

補足

このブックはマクロを使っています。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>編集出来ない様にしたい、が どの程度のものか https://support.office.com/ja-jp/article/%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B7%E3%83%BC%E3%83%88%E3%82%92%E4%BF%9D%E8%AD%B7%E3%81%99%E3%82%8B-3179efdb-1285-4d49-a9c3-f4ca36276de6 などで勉強して決める。 保護などの解除の操作をして、マクロの記録をとり、ショットカットに登録してはどうか。 何か初期設定が必要なら、ブックのopenイベントやシートのActiveteイベントを組むこともできる。 必要性や効果を詳しく質問に書いておくべきと思う。 ボタンを作ると利用者には、鬱陶しいのでは?

akira0723
質問者

補足

有り難うございます。 ボタンやショートカットがシートが保護されていても使えることは目から鱗で非常に役に立ちます。 出来ればお手数ですが、Close時に全シートに一括保護するコードを教えていただけませんか? アクティブシートしかやつたことがないので。

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.1

まず、 シートにマクロボタン[編集開始]を配置し このボタンが押されら保護解除の命令を実行するようにします。 具体的には、ボタンを配置したシートオブジェクトに Private Sub CommandButton1_Click()  Me.Unprotect End Sub といったコードを書きます。 続いて、ブックを閉じるときに、 シートが保護されるようにします。 具体的には Thisworkbookオブジェクトに Private Sub Workbook_BeforeClose(Cancel As Boolean)  With ThisWorkbook.Sheets(1)   .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _     Password:="1234"  End With End Sub といったコードを書きます。

akira0723
質問者

お礼

度々お世話になっていることに今気づきました。 試行錯誤で何とか出来そうなのですが、実際に作業してみて抜けに気づいたので別の質問にしました。 厚かましいお願いですかこちらにも宜しくお願いします。 シート移動時の自動保護、です。 宜しくお願いします‼

akira0723
質問者

補足

有り難うございます。 No2さんの方法と組み合わせて解決出きそなのですが実作業を想定してみて気づいたのですが複数のシートをいじられた場合には、クローズ時に全てのシートに保護がかかるようにしておく必要があります。 お手数ですが全てのシートに保護するコードを教えていただけませんか? 当方アクティブシートしか使ったことがないので。