[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『保護有りセルへ転記?A』(ちぃさん)
お世話になります。
[[20141111214342]]の追加質問になります。
宜しくお願いします。
保護を付きシート(セル)への転記はできるようになったのですが、
「このシートのすべてのユーザーに許可する操作」
の設定した内容がすべて無効とされるので許可したい操作が設定できません。
マクロコードにどのように追加すれば設定した内容が有効になるのでしょうか?
もし、可能でしたら教えていただけないでしょうか。
現在の希望する許可する設定内容は
1、オートフィルターの使用
2、オブジェクトの編集
3、シナリオの変種
でございます。
どうか助けください。
宜しくお願いいたします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
(マナ) 2014/11/15(土) 11:09
マクロの記録で試してみましたがよくわかりません。
説明不足な部分がありましたので追加いたします。
現在、コチラのマクロコード
↓
Private Sub Workbook_Open()
' 一旦、シート保護を解除 ActiveSheet.Unprotect ' シート保護を設定(UIのみ) ActiveSheet.Protect UserInterfaceOnly:=True
ActiveWindow.ScrollRow = 1 End Sub
シートモジュールに記述しています。
現在は
Private Sub Worksheet_Activate()
' 一旦、シート保護を解除
ActiveSheet.Unprotect
' シート保護を設定(UIのみ)
ActiveSheet.Protect UserInterfaceOnly:=True
ActiveWindow.ScrollRow = 1
End Sub
としてtestしております。
説明不足があり申し訳ありません。
マクロの記憶を試した結果
Sub Macro1()
'
' Macro1 Macro
'
'
ActiveSheet.Unprotect ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _ False, AllowFiltering:=True Range("A1").Select ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 183.75, 99, 204, _ 105.75).Select Sheets("Sheet2").Select ActiveSheet.Unprotect ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 192, 238.5, 197.25 _ , 114.75).Select End Sub
このような感じで記録されていました。
動作手順は
シートを開いた際にオートシェイプの挿入ができない状態であったので保護を解除。
次に保護後に許可する項目にチェック。
次に保護の設定。
次に保護が設定されているかの確認。
次に図形を挿入
次にSheet3を選択しSheet2へ戻る。
ここでまたおーとシェイプの挿入が不可能。
このような感じでございます。
ActiveSheet.Unprotect⇒ここで保護が解除?となっていると思うのですが。 ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _⇒ここで許可する設定内容をセット?となっているのとおもってます。 False, AllowFiltering:=True⇒ここで保護セット?と思っているのですが。
どの辺りにどのような感じで編集すればよろしいでしょうか?
まったくわかりませんのでお助けいただけないでしょうか。
どうぞ宜しくお願いいたします。
(ちぃさん) 2014/11/15(土) 12:38
現在のコード >ActiveSheet.Protect UserInterfaceOnly:=True
記録されたコード >ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _ False, AllowFiltering:=True
合わせると、こんな感じでは ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _ False, AllowFiltering:=True, UserInterfaceOnly:=True
質問とは別件ですが、 ActiveSheetではなく、シート名を指定すれば、
>Private Sub Workbook_Open() だけで十分で、
>Private Sub Worksheet_Activate() こっちは不要ではありませんか。
(マナ) 2014/11/15(土) 13:20
希望した仕上がりです。
。*:゜☆ヽ感謝です☆゜:。*。
>>Private Sub Worksheet_Activate()
>こっちは不要ではありませんか。 確かにです。 コチラから提示したものなのですが実は元のコードに満足はできておりません。 コチラのコードを使用するBookは多数の人が触ります。 保護をするのは触られたくない部分があるからなのですが、保護をする部分に使用時どうしても入力が必要な場合があります。 作成したBookを普通に使用してもらえれば全く問題ないのですが、故意的に保護を解除する方がいるのです。 コチラのコード、最初にパスワードを入力してしまうので解除の際はパスワードが不要となってしまいます。 Private Sub Workbook_Open() を Private Sub Worksheet_Activate() に変更しても結局はまた解除をされると意味がなくなるのですが。。。 このような感じの考えの結果でございます。
他に何か手立てはありますでしょうか?
もしありましたら是非ともご教授いただけないでしょうか。
おんぶに抱っこで申し訳ありません。
宜しくお願いいたします。
(ちぃさん) 2014/11/15(土) 14:35
>解除の際はパスワードが不要となってしまいます。
Protectをヘルプ等で調べてみてください。パスワードも設定できます。
(マナ) 2014/11/15(土) 15:29
>Protectをヘルプ等で調べてみてください。パスワードも設定できます。
知りませんでした。
わからないなりに調べてみましてマクロコードを変更してみたのですがシートを開いた時に毎回解除パスを求められます。
何がだめなのでしょうか?
Private Sub Worksheet_Activate()
' 一旦、シート保護を解除
ActiveSheet.Protect Password:="1"
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFiltering:=True, UserInterfaceOnly:=True
ActiveWindow.ScrollRow = 1
End Sub
コチラが変更後です。
因みにもし良ければ
ActiveWindow.ScrollRow = 1
↑
コチラの意味もわからないので教えて頂きたいです。
どうぞ宜しくお願い致します。
(ちぃさん) 2014/11/15(土) 17:01
解決しました。
Protect Password
ではなく
Unprotect Password
でいいのですね。
ありがとうございました。
また躓きましたら宜しくお願い致します。
(ちぃさん) 2014/11/15(土) 17:10
やはり解決できてないです。
Private Sub Worksheet_Activate()
' 一旦、シート保護を解除
ActiveSheet.Unprotect Password:="1"
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFiltering:=True, UserInterfaceOnly:=True
'False, AllowFiltering:=True, UserInterfaceOnly:=True
ActiveWindow.ScrollRow = 1
End Sub
どのあたりを変更すればよでしょうか?
宜しくお願い致します。
(ちぃさん) 2014/11/15(土) 17:13
Private Sub Workbook_Open() Const pw As String = "1"
' 一旦、シート保護を解除 Sheets("Sheet1").Unprotect Password:=pw
' シート保護を設定(UIのみ) Sheets("Sheet1").Protect Password:=pw, _ Contents:=True, DrawingObjects:=False, Scenarios:=False, AllowFiltering:=True, _ UserInterfaceOnly:=True
End Sub
>ActiveWindow.ScrollRow = 1
ScrollRowについてヘルプを調べて下さい。
ProtectやUnprotectについても目を通しておいたほうがよいです。
(マナ) 2014/11/15(土) 17:35
満足できる仕上がりになりました。
ActiveWindow.ScrollRow = 1
理解できました。
まだまだ理解できておらず貴重な時間を使って回答頂き申し訳ないです。
ありがとうございました。
(ちぃさん) 2014/11/15(土) 19:48
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.