Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

シートを一括保護するマクロの作成方法について

109 views
Skip to first unread message

ナミキマン2006

unread,
Jan 6, 2010, 8:13:02 AM1/6/10
to
Excel2007です。
sheet2 sheet3 sheet4を一括して保護するには、どうVBAを書けばよろしいでしょうか。
また、一括して保護を解除するにはどうすればよいでしょうか。教えてください。

y sakuda

unread,
Jan 6, 2010, 8:23:23 AM1/6/10
to
"ナミキマン2006" <@discussions.microsoft.com> wrote in message
news:F2C2FA5D-EB7E-4E96...@microsoft.com...

> Excel2007です。
> sheet2 sheet3 sheet4を一括して保護するには、どうVBAを書けばよろしいでしょうか。
> また、一括して保護を解除するにはどうすればよいでしょうか。教えてください。
どこまで出来ていて、どこが分からないのでしょうか?
一括保護というのはありませんので、プログラムの中で、ワークシートの検索を行い、何らかの条件で保護するシートを選択して、Protectメソッドで1シートづつ保護を掛けるだけです。

--
ニュースグループの購読にはOutlook Express などのニュースリーダーを
使用してください。

下記のサイトをご覧下さい
http://www.microsoft.com/japan/communities/newsgroups/faq.mspx
http://www.microsoft.com/japan/communities/newsgroups/list.mspx

y sakuda Microsoft MVP for Business Productivity - Excel
(Jan 2009 - Dec 2009)
sakudaya...@hotmail.com

VBA,VBSによるツールなどがあります
http://www16.plala.or.jp/ysakuda/ystop.htm
6月27日 Windows更新履歴をVBAのページに追加しました。

かぶと

unread,
Jan 6, 2010, 9:28:28 AM1/6/10
to
VBAに堪能な方から回答があればそれを参考にしてください。

当方はVBAは全くわかりませんが、マクロの記録で出来ます。

たとえば、
Sheet1がアクティブの状態から
1.開発 → コード → マクロの記録 → マクロの記録のダイアログで必要項目を設定して[OK]
2.Sheet2をアクティブにして
  校閲 → 変更 → シートの保護 → シートの保護のダイアログで許可する項目を設定して[OK]
3.Sheet3をアクティブにして
  校閲 → 変更 → シートの保護 → シートの保護のダイアログで許可する項目を設定して[OK]
4.Sheet4をアクティブにして
  校閲 → 変更 → シートの保護 → シートの保護のダイアログで許可する項目を設定して[OK]
5.開発 → コード → 記録終了

シート保護の解除も同様に行う。

これで
開発 → コード → マクロ からシートの保護あるいはシート保護の解除のマクロを実行すればよいかと。

必要なら
開発 → コード → マクロ → マクロ名選択 → [編集] で構文の編集を行ってみてください。

Isikawa Shinzi

unread,
Jan 6, 2010, 9:42:58 AM1/6/10
to

ナミキマン2006さんの<F2C2FA5D-EB7E-4E96...@microsoft.com>
>sheet2 sheet3 sheet4を一括して保護するには、どうVBAを書けばよろしいでしょうか。
Sub DasaiMacro1()
Sheet2.Protect
Sheet3.Protect
Sheet4.Protect
End Sub

>また、一括して保護を解除するにはどうすればよいでしょうか。教えてください。
Sub DasaiMacro2()
Sheet2.Unprotect
Sheet3.Unprotect
Sheet4.Unprotect
End Sub

参考までにすべてのシートを保護するマクロは
Sub AllSheet()
Dim mySheet As Worksheet
For Each mySheet In ThisWorkbook.Sheets
mySheet.Protect
Next mySheet
End Sub
のようになります。

--
IsikawaShinzi mailto:hari...@hyper.cx

ナミキマン2006

unread,
Jan 6, 2010, 11:43:01 PM1/6/10
to
ありがとうございました。助かりました。参考に紹介していただいたものも本当に助かりました。

"Isikawa Shinzi" からの元のメッセージ:

> .
>

ナミキマン2006

unread,
Jan 7, 2010, 12:42:01 AM1/7/10
to
追加の質問で恐縮です。
参考として教えていただいたすべてのシートを保護するマクロは一瞬で実行されました。が、このマクロの  mySheet.Protect を
mySheet.Unprotectと書き換えて、一括解除するようにして実行したら、作業中の画面が頻繁に変わり、少し時間をおいて完了するのですが、そんなものなのでしょうか。それともそうした書き換えは理にかなっていないということでしょうか。教えてください。

"Isikawa Shinzi" からの元のメッセージ:

> .
>

Isikawa Shinzi

unread,
Jan 7, 2010, 2:32:36 AM1/7/10
to
ナミキマン2006さんの<F58D0C6F-D2AA-427F...@microsoft.com>

それでよいのではないかと思います。

--
IsikawaShinzi mailto:hari...@hyper.cx

ナミキマン2006

unread,
Jan 7, 2010, 5:31:02 AM1/7/10
to
しかし、なぜかこのマクロを実行した後、色々な誤作動が起きるのです。
たとえば、カットanddペーストを実行したり、データを打ち込むと画面が変に壊れるのです。不思議なことに壊れた画面とは違うシートを選択し再度そのシートに戻ると正常になっている。この不安定感が心配なのです。
ちなみに、記録マクロで一つ一つsheetを選んで保護を解除するマクロをつくって実行すると、そういう現象は起きません。ただ、教えていただいた、すべてのシートに保護をかけるマクロのように画面を切り替えることなくあという間に実行できるほうがうれしいので、なんとかそうできるようにお教えいただけないかと思っております。
よろしくお願いします。


"Isikawa Shinzi" からの元のメッセージ:

> .
>

Isikawa Shinzi

unread,
Jan 7, 2010, 10:15:08 AM1/7/10
to
ナミキマン2006さんの<933E3C76-1D59-4270...@microsoft.com>
想定外でした。すみません。

--
IsikawaShinzi mailto:hari...@hyper.cx

y sakuda

unread,
Jan 7, 2010, 10:41:44 AM1/7/10
to
"ナミキマン2006" <@discussions.microsoft.com> wrote in message
news:933E3C76-1D59-4270...@microsoft.com...

> しかし、なぜかこのマクロを実行した後、色々な誤作動が起きるのです。
> たとえば、カットanddペーストを実行したり、データを打ち込むと画面が変に壊れるのです。不思議なことに壊れた画面とは違うシートを選択し再度そのシートに戻ると正常になっている。この不安定感が心配なのです。
> ちなみに、記録マクロで一つ一つsheetを選んで保護を解除するマクロをつくって実行すると、そういう現象は起きません。ただ、教えていただいた、すべてのシートに保護をかけるマクロのように画面を切り替えることなくあという間に実行できるほうがうれしいので、なんとかそうできるようにお教えいただけないかと思っております。

保護の付け外しが原因でそういう現象が起こったという経験はありません。
ですから、直接の答えにはならないのですが、画面の状態が気になるのでしたら、そのコードの
最初と最後に

Sub AAA(・・・・・・・・)
Application.ScreenUpdating=False
<一連のコード>
Application.ScreenUpdating=True
End Sub

を入れ、Screenの変化を止めてしまったらいかがですか?
マクロ実行中の画面の変化を楽しんでおられる訳ではないと思います。
なお、画面の描画は相当ストレスがかかってますから、これによりマクロの実行も早くなります。

ナミキマン2006

unread,
Jan 8, 2010, 3:42:01 AM1/8/10
to
色々お願いして申し訳ありませんでした。
y sakudaさんより教えていただいたvbaを組み合わせてみましたら、不安なく動くことがわかりました。ありがとうございました。

"Isikawa Shinzi" からの元のメッセージ:

> .
>

ナミキマン2006

unread,
Jan 8, 2010, 3:44:01 AM1/8/10
to
ありがとうございました。
おかげさまで、マクロの実行速度が劇的に速くなりました。
感動しました。

"y sakuda" からの元のメッセージ:

> .
>

0 new messages