エクセル2010のVBAでのブック、シートの保護&解除の方法について教えて頂きたく、
質問させて頂きます。
消されては困るシートや数式がある関係で、ブックオープン時にVBAでブックとシートにそれぞれパスワードをかけて保護しています。
VBAではシートの削除、作成、コピーなどを行っているため、VBA実行時のみ、保護を解除させるようにしたいと思います。
ただ、対象のシート自体にも入力したい項目があるため、その箇所については保護を解除しておく必要があります。
そして、VBA実行後、再度、その箇所以外にパスワードで保護をかけ直します。
イメージとしては下記のような流れになります。
対象ブック:ブックA
対象シート:シート1
パスワード:1234(それぞれ)
常時保護を解除しておきたいセル:range("A6:H106")
1.(オープン時には、)ブック保護&特定のセル以外のシート保護
2.VBA実行時には全ての保護解除
3.VBA終了時に、1の状態に戻る
どうぞよろしくお願い致します。
No.2ベストアンサー
- 回答日時:
>worksheetクラスのvisibleプロパティを設定
そういうお話はありませんでしたが。典型的な二度手間ですね。
「ブックの保護」された状態のブックでは、シートの表示・非表示を操作することは当然できません。
この部分では、回答した「シートの保護」のようには、マクロ側で回避する手段はありません。
元のご相談で書かれている通り、
>VBA実行時のみ、保護を解除させるようにしたい
素直に「VBAで(対象の/問題となる)操作をする際に」そのようにしてください。
作成例:
private sub Workbook_Open()
dim i as integer
for i = 1 to 3
worksheets(i).protect password:=1234, userinterfaceonly:=true
next i
thisworkbook.unprotect password:=1234
for i = 4 to 20
worksheets(i).visible = xlsheethidden
next i
thisworkbook.protect password:=1234
end sub
ありがとうございました。
無事に動かすことができました。
しっかりやりたいことを考えてやらないといけないですね。
頑張りたいと思います。
ありがとうございました!
No.1
- 回答日時:
保護する必要が無いA6:H106については、マクロ以前の問題として、セルの書式設定の保護でロックのチェックを外しておきます。
やるべきこと:
1.保護する必要が無いセル範囲のロックを外して置く
2.ブックを開いた際にブックの保護、並びに「手動操作に対する」シートの保護をマクロで行う
以上です。
ブックAのThisWorkbook:
private sub Workbook_Open()
worksheets("Sheet1").protect password:=1234, Userinterfaceonly:=true
thisworkbook.protect password:=1234
end sub
一応念のため繰り返しておきますが、「VBAの実行時」に「シートの保護をわざわざ解除」する必要はありません。
ご回答ありがとうございます!
ロックを外したいセルにまでロックがかかっていました。。
教えて頂いた内容を参考に書いてみたところ、無事に保護をかけることができたにですが、
「実行時エラー'1004':worksheetクラスのvisibleプロパティを設定できません」
と出てしまいました。
↓が実際にブックAのThisbookに書いた内容になります。
シートは全部で20シートあり、保護をかけたいシート(sheet1、2、3)は左から3つ順に並んでいます。
Private Sub Workbook_Open()
Dim i As Integer
For i = 4 To 20
Sheets(i).Visible = xlSheetHidden
Next
'ワークブックの保護
ThisWorkbook.Protect Password:="1234"
'ワークシートの保護
.Worksheets("sheet1").Protect Password:="1234", userinterfaceonly:=True
.Worksheets("sheet2").Protect Password:="1234", userinterfaceonly:=True
.Worksheets("sheet3").Protect Password:="1234", userinterfaceonly:=True
End Sub
他にも↓のような 内容で書いて見たのですが、
モジュール内でコンパイルエラーが発生しました~のようなエラーが出てしまいます。
Dim ws as worksheet
Dim wsname as string
Set wsname ="sheet1" or "sheet2" or "sheet3"
For each ws in thisworkbook.worksheets
If ws.name = wsname then
Sheets(ws).Visible = xlSheetHidden
next
以下、同じ
どのように書けばエラー無く処理出来るか、教えて頂けませんでしょうか。
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/03/01 15:44
- Excel(エクセル) エクセルVBA Workbooks.Addで作成されたブックのシート保護の解除について 1 2023/02/23 08:02
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) エクセルでシート保護のかかり方の違いとセルの非保護の設定 3 2022/08/09 10:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
フォントについて教えてください!
みなさんの一番好きなフォントは何ですか? よく使うフォントやこのフォント好きだなあというものをぜひ教えてください!
-
【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
【お題】 ・ありそうだけど、絶対に無いことわざを教えてください。
-
自分の通っていた小学校のあるある
進学したり大人になってから、「あれって自分の小学校だけだったのかな」と思うことありますよね。 逆に「他の小学校ってそんなことするの!?」と思ったり。 そんな「自分の通っていた小学校」のあるあるを教えてください!
-
我がまちの「給食」自慢を聞かせてっ!
富山県の給食には「ベニズワイガニ」が出る、、、なんて話を聞いたことがあります。 日本全国「え、給食にそれ出るの!?」な驚きメニューがまだまだあるはず!
-
実行時エラー'1004': WorkSheetクラスのVisibleプロパティを設定できません
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでブックを非表示で開いて処...
-
Excelの警告について
-
エクセルの関数 ENTERを押...
-
エクセルを共有するとPCによっ...
-
エクセルで参照しているデータ...
-
Excel(2010)のフィルターが保...
-
ブックのピボットを別ブックに...
-
Excelで複数ブックの同一セルに...
-
アクセスvbaでエクセルブックを...
-
Excelでブックの共有を掛けると...
-
「ブックの共有」を有効にして...
-
エクセルでウィンドウの枠固定...
-
エクセル 複数のブックを一度...
-
VBAでブック保護非保護を判定す...
-
同じフォルダへのハイパーリン...
-
複数エクセルから特定シートの...
-
Excelファイルをダブルクリック...
-
VBAマクロで作成した新規ブック...
-
フォルダ内の複数ファイルから...
-
エクセルファイルを開かずにpdf...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルで参照しているデータ...
-
Excelでブックの共有を掛けると...
-
WorkBooksをオープンさせずにシ...
-
エクセルにおける,「ブック」...
-
印刷しようとすると強制終了に...
-
Excel(2010)のフィルターが保...
-
Excelファイルをダブルクリック...
-
ブックのピボットを別ブックに...
-
エクセルファイルを開かずにpdf...
-
エクセルで「ディスクがいっぱ...
-
同じフォルダへのハイパーリン...
-
Excelで複数ブックの同一セルに...
-
エクセルでウィンドウの枠固定...
-
VBA バックグラウンドで別ブッ...
-
エクセルで別ブックをバックグ...
-
エクセルで50行ごとに区切った...
おすすめ情報