マクロで複数のシートを保護&パスワードをかける方法とは?

このQ&Aのポイント
  • マクロを使用して複数のシートを保護し、パスワードを設定する方法について教えてください。
  • 下記の式を使用して複数のシートを保護しようとしていますが、エラーが発生してうまくいきません。どこが間違っているのでしょうか?
  • 初心者のため、式の意味がわからないので、助けを求めています。
回答を見る
  • ベストアンサー

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

マクロで複数のシートを保護&パスワードをかける為に下記式を作成しましたが エラー”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

  • 9134
  • お礼率82% (24/29)

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

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

変数myPasswordにパスワードをセットして置きながら、なぜ Password:=1234 なのか? sh.Protect Password:=myPassWordでは。

9134
質問者

補足

回答ありがとうございました。 下記に式を変更したのですが、やはり解除の方で400のエラーが出てしまいます。 式は・・・ Sub AllProtect() Dim sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each sh In Worksheets sh.Protect Password:=myPassword Next End Sub Sub AllUnprotect() Dim sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each sh In Worksheets sh.Unprotect Password:=myPassword Next End Sub です。 まだおかしな箇所があるのでしょうか。 もしくは、別の式でも良いので400のエラーが出ない物があれば助かるのですが。。。 あつかましい質問で恐縮ですが宜しくお願い致します。

関連するQ&A

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

    捺印君: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 このマクロがおかしいからエラーが出るんですよね? 違うマクロにすれば問題ないでしょうか? ちなみにマクロは「全シートの保護一括解除」と「一括保護」で パスワード付きの物をとなっております。

  • エクセル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 毎度すみませんがよろしくお願いします。

  • マクロ・複数シートに適用するには?

    初心者です。以下のマクロを組みました。 これを複数シートに適用するにはどうしたらよいのでしょうか? worksheets selectではうまくいきませんでした>< 具体的には1~80までのシートが数字で分けられており、 「目次」と「新規」以外の全てに適用したいです。 Sub Macro3() Dim sl As String Dim mySht As Worksheet sl = Range("A65536").End(xlUp).Address Range("B1", sl).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True For Each mySht In Worksheets Next End Sub

  • エクセルで1つのマクロを複数のシートに適用したい

    いつもお世話になっております。 以前ここで入力セルはファイル保存時に自動で保護かかるように、下記のコードを教わって便利に使い始めたのでですが、同じBookの複数のシート、あるいは一括で全てのシートで有効にしたいのですが。(この機能をデフォルトで選択機能にしていないのはおかしい位に思い始めています。) シート毎に範囲名を指定して、This Workbookにマクロを登録する必要があるのでしょうか? Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Const MyPassword = "" 'パスワード(省略可) Dim RowCnt As Long Dim ColCnt As Long Dim MyCell As Range With ThisWorkbook.Sheets(1) .Unprotect Password:=MyPassword For Each MyCell In Range("保護範囲") If MyCell.Value <> "" Then MyCell.Locked = True Else MyCell.Locked = False End If Next MyCell .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _ Password:=MyPassword End With End Sub

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

    エクセル作った表、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初心者で、わかりにくい説明ですが、よろしくお願いいたします。

  • エクセル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 この保護のマクロを使うと、記入可能なセルは、セルの書式設定の保護タブからチェックをはずしており全く問題ないのですが、 「色が変わる」という設定がエラーになります。 どのようにしたら、色が変わるのも許可されるマクロになるのでしょうか。 ご教示お願いいたします。

  • フォルダ内の複数ブック・シートを一括保護/解除する

    フォルダの中に複数のExcelファイル(ブック)が入っており、 それら全てのブック・シートの保護/解除を一括して行うマクロを現在使用しています。(後述) <現在の利用状況> ◆フォルダの中に複数のExcelファイル(ブック)が入っている(雛形、シート構成は全て同じ) ◆全てのブックにパスワード付きでブック保護・シート保護をかけている→パスワードは共通(1111) ◆マクロ用ブックは上記の処理対象ブックとは別フォルダに入れている (現在のVBAでは同一フォルダ内に入れた状態では作動しない) ◆マクロを実行する都度、任意のフォルダを選択する <改善希望> ◆マクロ用ブックと処理対象のブックを同一フォルダに入れた状態で作動するようにしたい (同一フォルダ内の自ブック以外のブックに対してブック・シートの保護/解除を一括処理したい) VBA初心者なので構文をどう書き換えるかで行き詰っています。 ThisWorkbook.Path を使うというのはなんとなく分かりますが、 何パターンか試してエラーの繰り返しです…。 ご教示頂けます様お願いいたします。 ------------------------------------------------------------------------- Sub 選択フォルダ内全て保護() Dim myFol As Object, myFile As Object, sh As Worksheet Dim openFilePath As String Const myPass As String = "1111" Set myFol = CreateObject("Shell.Application").BrowseForFolder(0, "フォルダを選択してください", 0) If myFol Is Nothing Then Exit Sub Application.ScreenUpdating = False openFilePath = myFol.self.Path & "\" With CreateObject("Scripting.FileSystemObject") For Each myFile In .GetFolder(openFilePath).Files If .GetExtensionName(myFile.Path) = "xls" Then With Application.Workbooks.Open(myFile.Path) For Each sh In .Worksheets sh.Protect Password:=myPass, DrawingObjects:=False, Contents:=True, Scenarios:=True, _ AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, _ AllowInsertingRows:=True, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True Next sh .Protect Password:=myPass, Structure:=True, Windows:=False .Save .Close False End With End If Next myFile End With MsgBox "終了しました" End Sub ------------------------------------------------------------------------- Sub 選択フォルダ内保護全て解除() Dim myFol As Object, myFile As Object, sh As Worksheet Dim openFilePath As String Const myPass As String = "1111" Set myFol = CreateObject("Shell.Application").BrowseForFolder(0, "フォルダを選択してください", 0) If myFol Is Nothing Then Exit Sub Application.ScreenUpdating = False openFilePath = myFol.self.Path & "\" With CreateObject("Scripting.FileSystemObject") For Each myFile In .GetFolder(openFilePath).Files If .GetExtensionName(myFile.Path) = "xls" Then With Application.Workbooks.Open(myFile.Path) For Each sh In .Worksheets sh.Unprotect Password:=myPass Next sh .Unprotect Password:=myPass .Save .Close False End With End If Next myFile End With MsgBox "終了しました" End Sub -------------------------------------------------------------------------

  • エクセル シート保護後コメントの挿入ができない

    win2000 officeXpです 以前こちらで、ファイルを開く時に 全シートの保護を行うマクロを教えたいただいたのですが、セルへのコメントの挿入ができなくなりました。 できる方法があればご教授ねがいます。 以下はその際教えていただいたマクロです。 Private Sub Workbook_Open() Dim sh As Worksheet For Each sh In Worksheets sh.EnableOutlining = True sh.Protect UserInterfaceOnly:=True Next sh End Sub

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

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

  • [EXCEL]保護されたシートでオートフィルタ利用可能にしたいのですが

    いかのURLにも同じような質問があり、 http://oshiete1.goo.ne.jp/qa2550996.html それにしたがって、シート保護でもオートフィルタ可能にするための VBA記述を行いましたが、オートフィルタが利用可能になりません。 シートの保護はできているようですし、エラーもでません。 記述したコードは以下になります。 Sub Workbook_Open()   Dim Sh As Worksheet   For Each Sh In Worksheets    Sh.Unprotect Password:="fukuri"    Sh.EnableAutoFilter = True    Sh.Protect Password:="fukuri", userInterfaceOnly:=True   Next Sh End Sub なにか、不足している記述があるのでしょうか? もし、わかる方がいらっしゃったら是非アドバイスいただけないでしょうか? 私自身、VBAを利用するのがはじめてで勉強不足にもかかわらず 大変恐縮ですが、ご回答いただければ幸いです。 宜しくお願いいたします。

専門家に質問してみよう