一括保護のマクロにパスワードをかける方法

このQ&Aのポイント
  • エクセル作った表、20シートを一括保護・解除をマクロを使い(どなたかの回答をコピーして)作成しました。
  • 保護・解除はできたのですが、このマクロにパスワードをかけ、保護の解除が他の人に出来ないようにしたいのですが、どのようにすれば良いのでしょうか?
  • VBA初心者で、わかりにくい説明ですが、よろしくお願いいたします。
回答を見る
  • ベストアンサー

一括保護のマクロにパスワードをかける方法

エクセル作った表、20シートを一括保護・解除をマクロを使い(どなたかの回答をコピーして)作成しました。保護・解除はできたのですが、このマクロにパスワードをかけ、保護の解除が他の人に出来ないようにしたいのですが、どのようにすれば良いのでしょうか? つかったマクロは・・・ 『保護』 Sub シートの保護() 'Dim~として変数を宣言する Dim myWS As Worksheet 'myWSを「ワークシート」として宣言 'ブック中のシート全部を1枚ずつ以下の作業を繰り返す For Each myWS In Worksheets With myWS 'myWSで .EnableSelection = xlUnlockedCells 'ロックしていないセルを選択出来るように .Protect '保護する End With 'With myWSに対する締め Next myWS 'Forに対応するもの End Sub 『解除』 Sub シートの保護解除() Dim myWS As Worksheet Application.ScreenUpdating = False For Each myWS In Worksheets myWS.Unprotect Next myWS Application.ScreenUpdating = True MsgBox "シート保護解除しました。" End Sub 『Workbook』 Private Sub Workbook_Open() Dim myWS As Worksheet For Each myWS In Worksheets With myWS .EnableSelection = xlUnlockedCells .Protect End With Next myWS End Sub この3つです。VBA初心者で、わかりにくい説明ですが、よろしくお願いいたします。

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

  • ベストアンサー
  • qualheart
  • ベストアンサー率41% (1451/3486)
回答No.2

ANo.1です。 そういう質問だったのですね。失礼しました。 『保護』のマクロ内にある .Protectの箇所を .Protect Password:="<パスワード>" ※<パスワード>には半角英数字で設定するパスワードを記入 すればOKです。 これでパスワード付きで保護されますので、解除するときはパスワードの入力画面が表示されます。

eke1205
質問者

お礼

ありがとうございました。 まだ、何かが違うのでしょうか、 Sub シートの保護() 'Dim~として変数を宣言する Dim myWS As Worksheet 'myWSを「ワークシート」として宣言 'ブック中のシート全部を1枚ずつ以下の作業を繰り返す For Each myWS In Worksheets With myWS 'myWSで .EnableSelection = xlUnlockedCells 'ロックしていないセルを選択出来るように .Protect psssword:="****" '保護する End With 'With myWSに対する締め Next myWS 'Forに対応するもの End Sub と、いれたら「名前付き引数が見つかりません」・・・となってしまったのですが、どうしたら良いでしょうか。 お手数おかけいたしますが、よろしくお願いいたします。

eke1205
質問者

補足

度々、すみません。 passwodではなく、pssswordと入れてました。

その他の回答 (3)

  • qualheart
  • ベストアンサー率41% (1451/3486)
回答No.4

できました? パスワード要求されませんか? うーん、ちゃんとできてればそんなことはないはずなので、もしできないとしたらどこかおかしのでしょうね・・・ 試しにパスワードを追加したソースコードをそのまま補足に貼り付けてもらえますか? 見ればどこが悪いのか分かると思いますので・・・ できてるのなら、良いのですが・・・w

eke1205
質問者

お礼

できました。 パスワードも要求され、カンペキです!(^^)! ありがとうございました。

  • qualheart
  • ベストアンサー率41% (1451/3486)
回答No.3

補足です。 『Workbook』のマクロの .Protectの箇所も .Protect Password:="<パスワード>" にしてください。

eke1205
質問者

お礼

できました~。 ありがとうございました。 これで、明日から仕事が進みます。 本当にありがとうございました。

eke1205
質問者

補足

パスワードを要求されず、保護が解除されてしまうのですが、何故でしょうか?

  • qualheart
  • ベストアンサー率41% (1451/3486)
回答No.1

マクロ自体に保護をかけることはできますよ。 Visual Basic Editorの左側に表示されるプロジェクトツリーでVBAProject(ブック名)を右クリックして[VBAProjectのプロパティ]を選択します。 [保護]タブにパスワードの設定欄があるので、ここにパスワードを設定すれば、パスワードを入力しない限りVisual Basic Editorでマクロの中身を見ることはできなくなります。

eke1205
質問者

補足

回答ありがとうございます。 すみません、質問が悪かったですね・・・。 マクロの中身を保護ではなくて、シートの保護を解除するのに、パスワードを入力しないと、保護を解除できないようにしたいのですが。 お分かりになりますか?

関連するQ&A

  • マクロで保護をかけているけど、幅の変更ができない

    マクロ初心者です。 複数のシートに下記の様なマクロで保護をかけています。 Sub シートの保護() Dim myWS As Worksheet For Each myWS In Worksheets With myWS .EnableSelection = xlUnlockedCells .Protect Password:="****" End With Next myWS End Sub マクロで保護がかかっている状態で、高さや幅を変更したいのですが、 どのようにマクロを変更すれば良いのかわかりません。 教えていただけますでしょうか?

  • 仕事で使用しています。教えてください。

    仕事で使用しています。教えてください。 エクセルの表でマクロを使用しているのですが、入力後保存して再度開くと入力できなくなってしまいました。 マクロ勉強中で、コピペしようしている為、どこがダメなのかがわかりません。 お分かりになる方、教えていただけますか? 現在使用しているマクロは Private Sub Workbook_Open() ActiveWorkbook.Unprotect Password:="8253" Sheets("日別管理").Visible = True Sheets("部門別").Visible = True Sheets("仕入原価").Visible = True Sheets("買掛").Visible = True Sheets("小口").Visible = True Sheets("一覧表").Visible = True Sheets("精算書").Visible = True Sheets("TOP").Visible = False Dim myWS As Worksheet For Each myWS In Worksheets With myWS .EnableSelection = xlUnlockedCells .Protect Password:="****", AllowFormattingColumns:=True, AllowFormattingRows:=True End With Next myWS End Sub Sub シートの保護() Dim myWS As Worksheet For Each myWS In Worksheets With myWS .EnableSelection = xlUnlockedCells .Protect Password:="****", AllowFormattingColumns:=True, AllowFormattingRows:=True End With Next myWS End Sub Sub シートの保護解除() Dim myWS As Worksheet Application.ScreenUpdating = False For Each myWS In Worksheets myWS.Unprotect Password:="****" Next myWS Application.ScreenUpdating = True MsgBox "シート保護解除しました。" End Sub 以上、3つです。 マクロを解除して使用してしまう方がいたので、マクロを使用してのみ使えるようにしたのですが…。 入力できなくなってしまいました

  • マクロを組むとこんなエラーが出るようになりました

    捺印君:Vel 1.25→(エクセルのフリーソフトです) PicturesクラスのPasteプロパティを取得出来ません。 予期せぬエラーが発生しました。 とエラーが出ます。 ちなみに組んでいるマクロは下記です Sub 全シートの保護() Dim Sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each Sh In Worksheets Sh.Protect Password:=myPassword Next End Sub Sub 全シートの解除() Dim Sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each Sh In Worksheets Sh.Unprotect Password:=myPassword Next End Sub このマクロがおかしいからエラーが出るんですよね? 違うマクロにすれば問題ないでしょうか? ちなみにマクロは「全シートの保護一括解除」と「一括保護」で パスワード付きの物をとなっております。

  • エクセルのマクロについて教えてください。

    エクセルのマクロについて教えてください。 エクセルの各シートごと一気にシート保護したいという質問に対して下記の回答が来ました。 Sub macro1() ’全シート一括保護 Dim W As Worksheet For Each W In Worksheets W.Protect ("1234") ’パスワード1234 Next W End Sub Sub macro2() ’全シート一括保護解除 Dim W As Worksheet For Each W In Worksheets W.Unprotect ("1234") ’パスワード1234 Next W End Sub 上記はプログラムで全てて入力でやらないとできませんか?マクロボタンから操作して上記のように設定する方法は ありませんか? 英語が苦手です。 また大文字、小文字が間違っても設定はできないのでしょうか?スペースも1行あるのとないのでは 意味が違うのでしょうか? 上記の意味を教えてください。 宜しくお願い致します。

  • エクセルVBAで SendKeys "{TAB}"

    エクセル2000です。 一つのブックに何枚かシートがあります。 各シートは保護されており、いくつかロックされていないセルがあります。 各シートの最初のロックされていないセル(シートにより異なります)にカーソルを飛ばしたいのですが、下記のようにやってもセルA1が選択されたままで飛んでくれません。 どこが悪いのでしょうか? Sub TEST() Dim sh As Worksheet For Each sh In Worksheets sh.Activate sh.Cells(1, 1).Activate SendKeys "{TAB}" MsgBox ActiveCell.Address Next End Sub なお、 sh.EnableSelection = xlUnlockedCells を挿入すればSendKeys "{TAB}"がなくとも、カーソルが飛びますが、今回はEnableSelection = xlUnlockedCellsしたくないのです。 よろしくおねがいします。

  • マクロ 戻るボタンを押したらシートの1枚目に戻る

    各シートに「戻る」というボタンを作りましたが、 「ボタンを押したらシートの1枚目をアクティブにする」というマクロを付けたいです。 下記は、『「戻る」というマクロを2枚目のシート以降すべてに付ける』というマクロです。 このマクロの中に、各シートの「戻る」ボタンを押せば、シートの1枚目に戻るような 指示を入れたいです。 分かる方いましたら、お願いします。。。 ※下記のマクロは以前ご回答いただいたマクロを引用したものです。 /////////////////////////////////// Sub 戻るボタン設置() Dim Sht As Worksheet For Each Sht In Worksheets If Not Sht.Name = Worksheets(1).Name Then With Sht For i = 1 To 1 '幅140、高さ20のボタンを追加 .Buttons.Add(900 * i, 10, 140, 20).Text = "戻る" Next i End With End If Next Sht Sheets(1).Select End Sub

  • エクセルVBAで保護したシート内の書式設定を可能にしたい

    お世話になります。 『記入可能セルに記入させ、「送信」フォームを押すと、1箇所文字の色が変わり、添付されてメールで送られる。』というマクロを組みました。 その後、 シートがたくさんあるので、VBAを使って、一度にシートの保護、非保護を行いました。 以下はその記述文です。 Sub 保護() Dim Ws As Worksheet For Each Ws In Worksheets Ws.Protect Password:=111 Next End Sub Sub 保護解除() Dim Ws As Worksheet For Each Ws In Worksheets Ws.Unprotect Password:=111 Next End Sub この保護のマクロを使うと、記入可能なセルは、セルの書式設定の保護タブからチェックをはずしており全く問題ないのですが、 「色が変わる」という設定がエラーになります。 どのようにしたら、色が変わるのも許可されるマクロになるのでしょうか。 ご教示お願いいたします。

  • マクロで複数のシートを保護&パスワードをかける為に下記式を作成しました

    マクロで複数のシートを保護&パスワードをかける為に下記式を作成しましたが エラー”400”のみ出て上手く行きませんでした。 どこか式がおかしいのでしょうか。。。 一応式を入力しておきます。 超初心者でまったく意味がわからないので、どなたか宜しくお願い致しますm(__)m Sub AllProtect() Dim sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each sh In Worksheets sh.Protect Password:=1234 Next End Sub Sub AllUnprotect() Dim sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each sh In Worksheets sh.Unprotect Password:=1234 Next End Sub

  • エクセルVBAで

    全シート保護(保護の解除)のコードなんですが、パスワードを求めない形にするには下記をどうすれば良いのですか? Sub 全シート保護の設定() Dim Sh As Worksheet x = Application.InputBox("パスワードを入力して下さい", Type:=3) For Each Sh In Worksheets Sh.Protect (x) Next Sh End Sub Sub 全シート保護の解除() Dim Sh As Worksheet On Error GoTo ErLine Do x = Application.InputBox("パスワードを入力して下さい", Type:=3) Loop While x = "False" For Each Sh In Worksheets Sh.Unprotect Password:=x Next Sh Exit Sub ErLine: y% = MsgBox("パスワードが違います ! 終了します", 48) End Sub 毎度すみませんがよろしくお願いします。

  • For Each でシートのループ

    簡潔に質問する為に以下のマクロを見て頂きたいのですが、 この場合sheet1,sheet2,sheet3のそれぞれの(1,1)に2が発生せず 現在目でみているシートにのみ有効なのですが、全シートに有効に するには何が足りないのでしょうか Sub aaa() Dim ws As Worksheet For Each ws In Worksheets  Cells(1,1)=2 Next End Sub