本質的に、標準の貼り付けを禁止し、場合によってはそれを特殊な/値の貼り付けに置き換えたいと考えています
次のように、貼り付け機能をトラップして、ユーザーに形式を選択して貼り付け/値を使用するように伝えるメッセージを割り当てることができます。
....
' place this in any suitable event trigger like
Application.CommandBars("Edit").Controls("Paste").OnAction = "TrappedPaste"
....
Sub TrappedPaste()
MsgBox "Your Paste is performed as PasteSpecialValues", vbOKOnly, "Paste"
' ok, now silently do a PasteSpecial/Values
On Error GoTo TryExcel
' try to paste text
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
Exit Sub
TryExcel:
On Error GoTo DoesntWork
Selection.PasteSpecial xlPasteValues
Exit Sub
DoesntWork:
MsgBox "Sorry - wrong format for pasting", vbExclamation + vbOKOnly, "Paste Problem"
End Sub
注意...これはすべての言語で機能するわけではないため、国際的なアプリケーションでは、より繊細にする必要があります
If ExistControl("Edit", 22) Then Application.CommandBars("Edit").FindControl(ID:=22).OnAction = "TrappedPaste"
アプリケーションには、ユーザーが「貼り付け」を取得できる場所が他にもあります。それらすべてをトラップする必要があります。
アプローチが気に入ったら、さらに詳しく説明できます。