
今は2003を使っています。
よく1年分のデータを集計します。
1月から12月までのシートを作り、13枚目に1年の集計をする形です。
いったん「シートの保護」をしたら、(表自体を)修正するときには12回保護の解除を行い、
終わったら12回シートの保護をしなければならず、大変面倒です。
複数のシートを選択すると、「シートの保護」というところがグレーになり、選択できません。
検索すると、複数のシートの保護を一度に解除するというソフトは発見しましたが(それは2000対応とのことで、試してはいませんが)、
解除も保護も一度にできないものでしょうか?
No.1ベストアンサー
- 回答日時:
マクロを使いましょう。
どのレベルまで保護したいかが当方では分かりませんので、自由になるように書きたいと思います。
まずは保護したいブック(ファイル)を開いてください。この時どのシートを開いていても結構です。
以下の操作をしてください。
1) ツール(T)-マクロ(M)-新しいマクロの記録(R) を選択してください。
2) 現れた「マクロの記録」ウィンドウの、マクロ名(M)という部分に「Macro1」と書かれていると思いますが、これを「全シートの保護」と書き換えてください。
3) ツール(T)-保護(P)-シートの保護(P) を選択し、シートを保護します。その際、「ユーザーに許可する操作(O)」の部分については、お好きなように設定してください。
4) 記録を終了してください。
5) 同じシートを開いたまま、再びマクロの記録(R)を選択します。マクロ名は「全シートの保護解除」と書き換えます。
6) ツール(T)-保護(P)-シート保護の解除(P)を選択し、シートの保護を解除します。保護を解除したら記録を終了します。
さて、ではこの操作を全部のシートに適用できるようにしましょう。Altキーを押しながらF11キーを押してください。Visual Basic Editorという別のウィンドウが立ち上がります。このウィンドウに対して、以下の操作をしてください。
1) 画面左側に、エクスプローラの左側のような画面「プロジェクト」というのがあると思います。そこに、標準モジュールと書かれていると思いますので、その左の「+」と書かれた部分をクリックしてください。
2) すると「Module1」という表示が現れると思います。これをダブルクリックすると、右側に新しいウィンドウが表示されます。そこには以下のように書かれていると思います。
Sub 全シートの保護()
'
' 全シートの保護 Macro
' マクロ記録日 : 2005/2/18 ユーザー名 : ○○ ○○
'
'
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Sub 全シートの保護解除()
'
' 全シートの保護解除 Macro
' マクロ記録日 : 2005/2/18 ユーザー名 : ○○ ○○
'
'
ActiveSheet.Unprotect
End Sub
ActiveSheet.Protect の後ろの部分は、シートの保護を実行した時のオプションが違うと変わってきますので、そこは気にしないでください。
3) さて、これを書き換えていきます。まずは、「ActiveSheet」と2箇所書かれていると思いますが、どちらも「Sh」と書き換えてください。
4) 今書き換えた行の上に
For Each Sh In Worksheets
と書き加えます。2行ともです。
5) 今度は3)で書き換えた行の下に
Next Sh
と書き加えます。2行ともです。
6) 保存してウィンドウを閉じます。
これで終了です。全シートを保護したい時は、Altキーを押しながらF8キーを押してマクロウィンドウを開き、「全シートの保護」を選んで実行(R)を、解除したい時は「全シートの保護解除」を選んで実行(R)を押してください。目的の操作ができると思いますよ。
ご回答ありがとうございます。
なるほど…マクロですか。
簡単なマクロを数回使ったことがあるだけですので少々自信がありませんが、さっそく試してみようと思います。
ありがとうございました。
No.5
- 回答日時:
既に幾つかVBAコードが回答されておりますが、選択されたシートだけを保護・保護解除の対象とするサンプルです。
つまり、シートの順番やシート名がVBAで指定不要なため、汎用的に使えます。ご参考までに。
【以下コード】
'パスワード設定
Public Const strPasswrd As String = "sample"
Sub 選択シート保護()
Dim i As Integer
Dim strSH() As String
Application.ScreenUpdating = False
With ActiveWindow
N = .SelectedSheets.Count
ReDim strSH(1 To N)
For i = 1 To N
strSH(i) = .SelectedSheets(i).Name
Next i
'作業グループ解除
.SelectedSheets(1).Select
'シート保護
For i = 1 To N
'パスワードを設定するなら次行のコメント解除
Sheets(strSH(i)).Protect 'Password:=strpaswrd
Next i
'作業グループ再設定する場合はコメント解除
'Sheets(strSH).Select
End With
End Sub
Sub 選択シート保護解除()
Dim i As Integer
Dim strSH() As String
Application.ScreenUpdating = False
With ActiveWindow
N = .SelectedSheets.Count
ReDim strSH(1 To N)
For i = 1 To N
strSH(i) = .SelectedSheets(i).Name
Next i
'作業グループ解除
.SelectedSheets(1).Select
'シート保護解除
For i = 1 To N
'パスワードを設定するなら次行のコメント解除
Sheets(strSH(i)).Unprotect 'Password:=strpaswrd
Next i
'作業グループを再設定する場合はコメント解除
'Sheets(strSH).Select
End With
End Sub
この回答への補足
こちらの補足をお借りしてみなさんにお礼申し上げます。
長年「何とかならないか」と思っていたことが、これで解決しそうです。
これを機に、マクロをもうちょっと勉強しようと思います。
みなさんありがとうございました。
ポイントはお二人にしかつけられませんが、みなさんに20p差し上げたい気持ちです。
大変お世話になりました。
むむむ…ちょっと難しそうですね…
ですが大変参考になります。
今まで面倒そうなマクロを敬遠していたので(EXCEL関数は得意なんですが…)、ちょっとがんばってみようと思います。
大変参考になります。
アドバイス、ありがとうございました。
No.4
- 回答日時:
シート名が m月 なら、以下だけです。
For ii=1 to 12
Worksheets(ii & "月").Ptotect 'シート保護
Next ii
保護解除の場合は、Protect を Unprotect にします。
パスワードを掛けている場合は、
Protect ("パスワード")
か
Unprotect ("パスワード")
になります。
なるほど~。
シート名を選んで保護することもできるのですね。
マクロはいまいち自信がありませんが、挑戦してみます。
アドバイスありがとうございました。
No.3
- 回答日時:
この場合はマクロで対応するのが簡単です。
例えばすべてのシートを保護するなら以下のマクロを実行します。
Sub sample()
Dim i As Integer
For i = 1 To Sheets.Count
Sheets(i).Select
ActiveSheet.Protect
Next i
End Sub
保護をはずすなら
ActiveSheet.ProtecttをActiveSheet.UnprotectにすればOKです。
最後のシートを保護しないなら
For i = 1 To Sheets.Count - 1 に変更してください。
シートは全部保護します。(1~12枚目は入力するセルだけ保護をはずします。13枚目は各シートの合計額の参照だけです。)
最後のシートだけ保護をはずす方法もあるのですね。
大変参考になります。
これからマクロに挑戦してみます。
アドバイスありがとうございました。
No.2
- 回答日時:
保護する意図がわからないので、ずれた回答になるかもしれません。
ファイル自体を保護すれば解決するのではないでしょうか。
「名前を付けて保存」で「ツール」→「全般オプション」
を試してみては?
すみません。説明が足りなかったようで。
作った表(ファイル)は主に私ではないパソコン初心者が使う物で、計算式なども簡単なものなのですが、
誤って入力した際本人では直すことができないため、「ひながた」として表を私が作っているのです。
今回はマクロを使用すればいいとアドバイスをいただき、そちらに挑戦してみるつもりですが、
「全般オプション」の方も、試してみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルの複数シートの保護を一括でする方法を教えてください(編集したいセルあり)
Excel(エクセル)
-
エクセル・複数のシートを一度に保護できませんか?
その他(ソフトウェア)
-
複数シートを一括で保護を掛ける際に書式設定は「変更可」にするVBAを教えて下さい。
Excel(エクセル)
-
-
4
エクセルファイルを開く時、常に同じシートから開くようにするには?
Windows Vista・XP
-
5
Excelマクロ パスワードを入力して、全シート一括保護解除したい。
その他(Microsoft Office)
-
6
複数シートの保護・解除
Excel(エクセル)
-
7
すべてのシートを選択してエクセルの入力規則
Excel(エクセル)
-
8
エクセル: セルの枠を超えて表示
Excel(エクセル)
-
9
リンク先のファイルを開かなくても、値が読み込めるようにできますか?(SUMIFSを使ってます)
Excel(エクセル)
-
10
あるセルに特定の文字列を打つと、他のセルに決められた文字が自動入力するように
Excel(エクセル)
-
11
エクセルの保護で、列の表示や非表示が加納にするには
Excel(エクセル)
-
12
リストと一致する値のセルを塗りつぶしたい。
その他(Microsoft Office)
-
13
Excelシートの保護(図の挿入だけ許可)
Excel(エクセル)
-
14
有無、要否、賛否、是非、可否、当否…これらの言葉について
その他(教育・科学・学問)
-
15
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
16
エクセルでの計算式で求められた値に( )カッコをつけたいのですが…
その他(パソコン・スマホ・電化製品)
-
17
マクロを複数シートに実行するには?
Excel(エクセル)
-
18
【VBA】複数のシートの指定した列を非表示・表示をさせたい
Excel(エクセル)
-
19
VBAで指定シート以外の選択
Visual Basic(VBA)
-
20
Excel 複数あるシートの保護解除(パスワード付き)
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
特定のシートのみ再計算させな...
-
エクセルでブック内の倍率がバ...
-
【ExcelVBA】マクロの入ったシ...
-
EXCELの図形(テキストボックス)...
-
Accessのテーブルを既存のExcel...
-
エクセルの2つのシートを並び...
-
エクセル、特定のシートにパス...
-
エクセルの複数シートでのリン...
-
エクセルのファイルサイズが急...
-
エクセルのシート連番の振り直し
-
Wordで差し込み印刷時に表示す...
-
ハイパーリンクでジャンプした...
-
エクセルを開くとメニューバー...
-
エクセルのシー名を二段表示に...
-
EXCELで存在しないシート...
-
アクセスからエクセルのシート...
-
vba Listviewでのチェックボッ...
-
特定のシート名のシートのみ除...
-
エクセルでリンク貼り付けした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
ハイパーリンクでジャンプした...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルで複数のシートに画像...
-
確定申告用の医療費集計フォー...
-
エクセルのシー名を二段表示に...
-
EXCELの図形(テキストボックス)...
-
エクセル、特定のシートにパス...
-
Wordで差し込み印刷時に表示す...
-
ワークシートそのものの色を変...
-
Accessのテーブルを既存のExcel...
-
EXCELで存在しないシート...
-
エクセルの複数シートでのリン...
-
エクセルのファイルサイズが急...
-
エクセルの2つのシートを並び...
-
エクセルのシート連番の振り直し
-
エクセルで、シートの名前を変...
-
エクセルでリンク貼り付けした...
おすすめ情報