[[20191213145715]] 『コンテンツ有効化しないと入力できないようにした』(nn) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『コンテンツ有効化しないと入力できないようにしたい』(nn)

コンテンツ有効化しないと入力ができないようにしたいのですが可能でしょうか。

セキュリティの関係でVBAを常時有効にできず
VBAを使うにはコンテンツの有効化を手動でする必要があります。

VBAを使って入力ミスを防ぎたいのですが
有効化せずに使用する者が多く困っています。

そこで有効化しなければ一切入力できないようにしたいと考えました。

考えとしては
・初期の設定で全セルロックの設定でシートの保護をかける
・コンテンツ有効化で入力が必要なセルのみロック設定を解除
・入力完了後、上書き保存を実施する際に再度全セルロックを実施

このような事は可能でしょうか?

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 私がよくやっている方法をご紹介します

 シートを追加して「マクロを有効にしてください」と書いておき
 その他のシートは非表示(xlSheetVeryHidden)にしておきます。
 ブックのオープンイベントに 使用するシートを再表示させるコードを書いておきます。

 こうすると ユーザーは、マクロを有効にしなければ、作業ができず
 マクロを有効にするか、閉じるしかなくなります。

 ただし、ユーザーが入力したデータはマクロで別ブック等に保存する必要があります。

 いわゆる 「マクロブックとデータブックの分離」で、マクロブックは読み取り専用にしておくことが
必要です。

(渡辺ひかる) 2019/12/13(金) 15:26


よくわからないのですが非表示コードと再表示のオープンイベント用コード作ってみました。

Private Sub Worksheet_Activate()

    Worksheets("A").Visible = xlSheetVeryHidden

End Sub

Private Sub workbookopen()

    Worksheets("A").Visible = True

End Sub

シートAが入力用の非表示シートです
このコードではオープンイベントで表示しても常に非表示になってしまうのですが
どのようにすればいいのでしょうか?

>ただし、ユーザーが入力したデータはマクロで別ブック等に保存する必要があります。
>いわゆる 「マクロブックとデータブックの分離」で、マクロブックは読み取り専用にしておくことが
>必要です。

あと、この部分もどういう意味か分からないのですが
入力するブックとマクロを記録するブックを別々にするということだと思いますが
なぜそのようにする必要があるのでしょうか?

私は仕事で人が書いたコードのセル範囲を手直しする程度にしか普段は使わないので
もう少し詳しく教えてもらえると助かります。

(nn) 2019/12/16(月) 09:42


 xlSheetVeryHidden にするのは マクロブックのメンテナンスで保存の時です

 >なぜそのようにする必要があるのでしょうか? 

 マクロブックを上書き保存させないためです

 ユーザーが処理後、作業シートを表示させたまま上書き保存すると
 次に開いたとき、その状態で開かれてしまいます。
 マクロが有効でなければそれを非表示にすることもできません

 ですから、マクロブックは、作業シートが非表示の状態がデフォルトになっている必要があり
 作業終了後はマクロブックは保存しないで閉じることになります。

(渡辺ひかる) 2019/12/16(月) 10:41


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.