ジャックはワークシートを作成し、グループ内の他のユーザーが情報を入力できるように転送してから、ワークシートを自分に返します。彼はワークシートを保護していますが、コピーアンドペーストを使用してワークシート全体を再作成したユーザーによって何度か火傷を負っています。返されたワークシートがオリジナルであることを確認するためにすべてをチェックするのは非常に時間がかかるため、ジャックはワークシートをコピーして貼り付ける機能を削除する方法を探しています。

コピーと貼り付けを無効にすることは、理論的には簡単です。 ThisWorkbookオブジェクトで次のような短いマクロを使用するだけです。

Private Sub Worksheet_Deactivate()

If ActiveSheet.ProtectContents = True Then         Application.CutCopyMode = False     End If End Sub

このマクロを使用すると、基本的に、誰かが別のワークシートまたは別のアプリケーションを選択してワークシートを非アクティブ化するたびにクリップボードがクリアされます。

もちろん、これは最も基本的な保護のみを提供します。決心したユーザーは、マウスを使用してシート名を右クリックし、[移動]または[コピー]をクリックしてワークシートをコピーできます。または、ワークブックの起動時にマクロを無効にして、クリップボードのクリアルーチンを無効にすることもできます。

おそらく、より良い方法は、組織内でビジネスがどのように行われているかを調べることです。ワークシートを他の人にコピーしてほしくない場合は、事前に伝え、重複を受け入れないことを他の人に知らせてください。

返されるものが重複しているかどうかを確認する非常に簡単な方法があります。それらのいくつかを次に示します。

  • 数式をセルに入れ、保護プロセス中にセルの内容を非表示にします。ワークシートを元に戻し、ワークシートの保護を解除し、数式がない場合、ワークシートはコピーです。

  • パスワードを使用してワークシートを保護します。後で同じパスワードでワークシートの保護を解除できない場合は、他の誰かがワークシートをコピーして自分のパスワードを使用したことがわかります。

  • ワークシートに非表示の数式を使用して、非表示のワークシートのデータにアクセスするようにします。ユーザーがワークシートをコピーした場合、非表示のワークシートは新しいワークブックにコピーされないため、数式では正しい答えが得られません。

  • ブックにマクロモジュールを挿入してから、モジュールを保護します。

モジュールは何もする必要はありませんが、返されるブックに保護されたモジュールがないか、単純なXLSXファイルである場合、それはコピーです。

  • ワークブックのカスタムプロパティ領域に何かを追加します。カスタムプロパティが返されるブックにない場合は、ブックがオリジナルではない可能性があります。

ワークシートをパスワードで保護する前に、セル保護プロパティを[非表示]に設定してみてください。ユーザーはセル内の結果を確認できますが、数式は表示できません。内容をコピーして別の場所に貼り付けると、数式は転送されず、結果のみが転送されます。これは、返送されたワークブックで簡単に見つけることができます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(12653)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。