#3 の訂正です。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Worksheets("Sheet1")
'プロテクトの保護を解除すれば、コピー等は出来ます。
.Unprotect Password:="xxx" '←ここ
'パスワードを入れればパスワードが必要でした。
End With
End Sub
なお、Application.CutCopyMode での制御は、少なくとも、Copy は効きます。
貼り付け場所を制限させるだけですから、あまり芳しくありません。
このほかにも、プロテクトせずに、ExcelのCopy/Paste のすべての機能を不可にする方法があります。
なお、以下をそれぞれのモジュールに貼り付けたら、一旦、保存して起動してください。これは、すべてのシートに適用されます。そのブックを閉じれば、機能は回復します。なお、私は、ひさびさに、この種のマクロを書いたので、抜け落ちがあるかもしれませんが、その時は、ご容赦願います。十分にテストをしてみてください。
'-----------------------------------------------------------------
'標準モジュール
Sub DisableCommandButtons(Cmd_bln As Boolean)
'コピー・貼り付けを停止させるサブルーチン・マクロ
Dim cmd As Variant
Dim Cmdb As Object
'ショートカットのインスタンス
If Cmd_bln = False Then
Application.OnKey "^c", ""
Application.OnKey "^v", ""
Application.OnKey "^x", ""
Else
Application.OnKey "^c"
Application.OnKey "^v"
Application.OnKey "^x"
End If
'コマンドボタンのEnable
For Each cmd In Array(1, 20, 24, 25) '"Menubar","Cell","Column","Row"
If cmd = 1 Then
With Application.CommandBars(cmd).Controls(2)
.Controls(3).Enabled = Cmd_bln
.Controls(4).Enabled = Cmd_bln
.Controls(5).Enabled = Cmd_bln
End With
Else
With Application.CommandBars(cmd)
.FindControl(, 19).Enabled = Cmd_bln 'Copy
.FindControl(, 22).Enabled = Cmd_bln 'Paste
.FindControl(, 21).Enabled = Cmd_bln 'Cut
End With
End If
Next cmd
End Sub
'-----------------------------------------------------------------
'ThisWorkbook モジュールへ
Private Sub Workbook_Open()
Call DisableCommandButtons(False)
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call DisableCommandButtons(True)
End Sub
'-----------------------------------------------------------------
お礼
できました! 本当、ありがとうございました。 せっかく教えていただいたソース、自分なりに分析して自分の知識にしていく所存です。 300ポイントほど差し上げたいところですが、システム上不可能なのが残念です。 心の中では20ポイントどころではない感謝をしていますので……。