電子書籍の厳選無料作品が豊富!

Excelでsheetのデータ入力だけを許可し、書式の変更はできないように
したいファイルがあります。

"保護"機能を使ってできると思っていたのですが、たしかに直接そのsheet中の
セルの書式を変更することはできないのですが、他のsheetのセルをコピーして
保護対象のsheetにそれを貼り付けることによって、書式が変更されてしまいます。

このようなケースでも、貼り付けを禁止するとか貼り付けても書式が変更されない
ようにするためにはどのようにすればよいでしょうか。

よろしくお願いいたします。

A 回答 (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 に、特殊な設定がされています。なお、インターネットサイトからの貼り付けも、値貼り付けになります。
    • good
    • 0

XXを禁止するという場合、


(1)XXを行ったとき、システムやエクセルから知らせもらって無効にする
(2)もともとできないようにする。
があるが(1)はそういうイベント通知をしてもらえい、VBAで捉えられないとどうにもなりません。
(2)は手動操作では、メニューになければ、どうしようもありません。エクセルはまだまだ、自分が作って使うという使い方が前提で他人が触るのを禁止するという観点から作りこんでないと思うので、こういうニーズには対応できてません。
本格的な業務システムでは、フォームなどに、必要なものだけ出し、余分なことは、触れたり、変えられないようになってます。エクセルほど、そのソフトができることを全部、前(画面)にぶちまけてません。
どちらかといえば、メニューを非表示にするとかで、質問とは違うが、対応できることがあれば、検討事項でないでしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A