- ベストアンサー
Excelで書式の変更を禁止しデータ入力だけ許可したい
Excelでsheetのデータ入力だけを許可し、書式の変更はできないように したいファイルがあります。 "保護"機能を使ってできると思っていたのですが、たしかに直接そのsheet中の セルの書式を変更することはできないのですが、他のsheetのセルをコピーして 保護対象のsheetにそれを貼り付けることによって、書式が変更されてしまいます。 このようなケースでも、貼り付けを禁止するとか貼り付けても書式が変更されない ようにするためにはどのようにすればよいでしょうか。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 二つの方法があると思いますよ。 簡単な方法は、コピーしたら、貼り付ける場所で、右クリックで、値貼り付けにするわけです。もう1つは、マクロです。多少、変った特徴のあるマクロです。 '標準モジュールに設定してください。 '一旦、ファイルを閉じて、再び開けるか、SettingKey マクロを実行することで、設定されます。 Sub myPaste() '値貼り付けのマクロ On Error Resume Next ActiveSheet.PasteSpecial Format:="テキスト" If Err() > 0 Then ActiveCell.PasteSpecial (xlPasteValues) End If End Sub Sub SettingKey() 'キー設定 Ctrl + V Application.OnKey "^v", "myPaste" End Sub Sub SettingOffKey() '設定解除 Application.OnKey "^v" End Sub Sub Auto_Open() '開けた時に設定 Call SettingKey End Sub Sub Auto_Close() '閉じた時に解除 Call SettingOffKey End Sub 値貼り付け=テキスト貼り付けになっていますから、ペースト側の書式をそのまま受け継ぎ、コピー側の書式情報は、全てなくなっています。ただ、この設定されたブックをあけておくと、現在の設定では、全てに同じように適用されますので、書式もコピーしたい場合、メニューから編集-貼り付けを使ってください。ショートカットのCtrl + V に、特殊な設定がされています。なお、インターネットサイトからの貼り付けも、値貼り付けになります。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
XXを禁止するという場合、 (1)XXを行ったとき、システムやエクセルから知らせもらって無効にする (2)もともとできないようにする。 があるが(1)はそういうイベント通知をしてもらえい、VBAで捉えられないとどうにもなりません。 (2)は手動操作では、メニューになければ、どうしようもありません。エクセルはまだまだ、自分が作って使うという使い方が前提で他人が触るのを禁止するという観点から作りこんでないと思うので、こういうニーズには対応できてません。 本格的な業務システムでは、フォームなどに、必要なものだけ出し、余分なことは、触れたり、変えられないようになってます。エクセルほど、そのソフトができることを全部、前(画面)にぶちまけてません。 どちらかといえば、メニューを非表示にするとかで、質問とは違うが、対応できることがあれば、検討事項でないでしょうか。