エクセル ルーチンマクロ
エクセルにて、コピー貼付を禁止するマクロを、教えてGooの過去のQ&Aから、参照させていただきました。
'---------------------------------------------------------------
Sub DisableCommandButtons(Cmd_bln As Boolean)
'コピー・貼り付けを停止させるサブルーチン・マクロ
Dim cmd As Variant
Dim Cmdb As Object
Dim CmdNames As Variant
CmdNames = Array("Worksheet Menu Bar", "Cell", "Column", "Row")
'ショートカットのインスタンス
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 CmdNames
If cmd = "Worksheet Menu Bar" 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
'---------------------------------------------------------------
このマクロを実行した所、コンテキストメニュー及びショートカットキーのコピー、貼付が無効になりました。
しかし、マクロを有効にしたエクセルファイルを閉じても、他のエクセルファイルもコピー、貼付が無効になってしまいました。
コピー、貼付を有効にするためのマクロを動かさないとダメなのか?と思い、色々試してみたのですが、うまくいきません。
EnableCommandButtons というマクロを別に作り
ショートカットのインスタンスの
If Cmd_bln = False Then を
If Cmd_bln = True Then に
書き換えて、実行した所、ショートカットキーは有効になったのですが
コンテキストメニューのコピー、貼付を有効にするやり方がわかりません。
どなたか、助けていただけないでしょうか?
よろしくお願い致します。
お礼
ありがとうございました。うまくできました。
補足
お忙しいところ丁寧なご回答をありがとうございます。勝手ながら重ねてお願いいたしたいのですが、実際のマクロは次のとおりです。ご回答の記述をどのように組み込めばよいかもぜひ教えてください。よろしくお願いします。 Sub Auto_Open() Application.OnKey "{RETURN}", "EnterKeyPaste" End Sub Sub EnterKeyPaste() If Application.CutCopyMode <> 0 Then MsgBox "CTRL+Vを使用してください" End If ActiveCell.Offset(0, 0).Activate End Sub