【スポンサーリンク】

ExcelのクリップボードエラーとCutCopyMode(2つのクリップボード領域)

  • Excelマクロを実行したら、
    クリップボードに問題がありますが、このブックにコンテンツを貼り付けることができます
    というエラーメッセージが出てきました。
  • VBAコードの不要なコピー処理を削除することで解決しました。
\記事が役に立ったらシェアしてね/
【スポンサーリンク】

クリップボードエラーが出てきた

Excelでマクロ作業を使っていたら、
「クリップボードに問題がありますが、このブックにコンテンツを貼り付けることができます」
というエラーメッセージが表示されました。

これは、クリップボードの機能に問題が生じていることを示しています。

クリップボード エラー

別のアプリケーションで使用されているため、コンテンツをクリップボードにコピーできませんでした。このブック内にコンテンツを貼り付けすることはできますが、他のアプリケーションでは使用できません。

ほかで「貼付け」ないなら無視してもよい

何が問題なの?

「途中のコピーでWindowsのクリップボードに記憶できなかった」ことを示しています。

とはいえ、VBAでの処理の途中にあるコピーは、別のアプリケーションで利用しないことも多いです。
その場合は無視してもよいです。

リモートデスクトップのクリップボード同期で競合?

私の場合は、「Chrome リモートデスクトップ」で外部からExcel VBAを開始したときに表示されました。

ただ、「クリップボードを同期する」のチェックを外しても、エラーは消えませんでした。

マクロの不要な「Selection.Copy」を消した

そうは言っても、なるべくなら直したいね。

原因の1つに、VBAのコード中でクリップボードを操作している際に生じることがあります。

エディタでマクロのコードを見てみると、「マクロの記録」で作られた不要なコードが原因だったようです。

原因を切り分けるために、シンプルなマクロを作ってみました。

Sub test ()
    Range("M13:M15").Select
    Selection.Copy
    Application.CutCopyMode = False
    Selection.Cut
    Range ("I13").Select 
    ActiveSheet.Paste
End Sub

このコードには、マクロを記録したときに間違えた操作が残っています。
「Selection.Copy」「Application.CutCopyMode = False」です。

これを削除したところ、マクロを実行してもエラーが出なくなりました。
細かく切り分けると、「Selection.Copy」がエラーの元でした。

コピーしたメモリをクリアしている

Application.CutCopyMode = False」っていうのは、何なの?

Excelでコピー&ペースト操作を行った際、特にVBAを使用しているとき、Application.CutCopyMode = Falseというコードが自動的に挿入されることがあります。

Application.CutCopyMode = False」は、Excelのコピー・カット状態を終了させます。

  • コピー・カットした後にセル範囲で点滅する線(ビジュアルインジケータ)が消え、
  • クリップボードに格納されていた内容はクリアされ、
  • ステータスバーがデフォルトの状態に戻ります。

コピー・ペーストの後には、Application.CutCopyMode = Falseをコードに挿入して、メモリを解放することが一般的な習慣になっています。

不要なコピーとクリアが連続していたから、処理がおかしくなったのかな。

このコードがないと、
  • コピー&ペースト操作後にExcelが予期せずクリップボードの状態を保持し続けることにより、パフォーマンスの低下や不要なメモリ使用を引き起こすことがあります。
  • たとえば、大量のデータを扱っている際に、Excelが「クリップボードに大量の情報があります」などの警告を表示することがあります。

VBAから管理できるのはExcelのクリップボード

ただし、「Application.CutCopyMode = False」では、Excelのクリップボードの内容をクリアするものの、Windowsのクリップボードには影響を与えません。
つまり、ExcelのクリップボードとWindowsのクリップボードは別々に管理されているのです。

逆にいえば、

Excelにはシステムクリップボードとは別に、複数の項目を格納できる追加のクリップボードがあるわけです。

確かに、通常のコピー・ペーストでは、次にコピーするまでは残っているのに、Excelのコピーの線は、別のセルを編集したりするだけで消えちゃうよね。

なんか違和感あったんだよね。

今回のエラーでは、VBAでのコピー処理が、Windowsのクリップボードにアクセスできなかったようです。

Excelのクリップボードをクリアするさまざまな方法

余談ですが、まれにExcelのクリップボードの内容が完全にクリアされないことがあるようです。
クリップボードに多くのデータが残って、Excelがハングする原因になるのです。

Excelのクリップボードエラーに関して、いくつかの対処法があります。

  1. クリップボードの履歴をクリアする:
    Excelで多くのファイルをコピーしている場合には、クリップボードの履歴をクリアします。
    Excelの「ホーム」タブにある「クリップボード」グループから「クリア」を選択します。
  2. 他のアプリケーションを閉じてみる:
    Excel以外のすべてのアプリケーションを閉じてから再度試してみてください。
  3. ライブプレビューを無効にする:
    Excelの「ファイル」タブから「オプション」を開き、「一般」タブの「ライブプレビューを有効にする」のチェックを外します。
  4. Linkedinの機能を無効にする:
    「Linkedinの機能を有効にする」オプションを無効にすると解決することがあります。
  5. Excelの再インストール:
    設定変更でもうまく行かない場合、Microsoft Officeを再インストールすることで問題が解決することがあります。

Windowsのクリップボードの管理

ついでですが、Windowsのクリップボードをクリアする方法も見ておきます。

クリップボード履歴の設定のON/OFF

Windows 10では、設定画面から「クリップボードの履歴」機能をON/OFFすることができます。
この設定を切り替えることで、問題が解消する場合があります。

コマンドでクリップボードの中身をクリアする(clip)

また、クリップボードの中身を手動でクリアする方法もあります。

cmd /c echo . | clip

このコマンドでは、空文字列をクリップボードに入れています。

clip

「clip」コマンドは、テキストやその他のデータをWindowsのクリップボードにコピーします。
コマンドラインやスクリプトからクリップボードに直接データを送ることができるので、自動化スクリプトなどでよく利用されます。

Windowsのクリップボードって、clipコマンドでアクセスできるんだね。

補足

Q
VBAやExcelでクリップボードエラーが発生した場合、どのように対処すればいいですか?
A

エラーメッセージを確認し、ExcelやVBAの設定を見直してください。
また、他のアプリケーションがクリップボードを使用していないかもチェックしましょう。

Q
Excelで「内容をクリップボードにコピーできませんでした」というエラーが出るのはなぜですか?
A

このエラーは通常、他のアプリケーションがクリップボードを使用している場合に発生します。
他のアプリケーションを閉じてから再度試してみてください。

Q
Excel VBAでクリップボードの内容をクリアできないのはなぜですか?
A

VBAのコードに問題があるか、他のプロセスがクリップボードを占有している可能性があります。
コードを見直し、他のアプリケーションがクリップボードを使用していないか確認してください。

Q
クリップボードに関連するエラーの原因は何ですか?
A

クリップボードエラーは、メモリ不足、プログラムの競合、または外部アプリケーションによるクリップボードの占有によって発生することが多いです。

Excelとほかのアプリケーションの関係がややこしいとエラーになります。

たとえば、クリップボード拡張アプリなども影響しますね。

QRコードを読み込むと、関連記事を確認できます。

ExcelのクリップボードエラーとCutCopyMode(2つのクリップボード領域)
【スポンサーリンク】
タイトルとURLをコピーしました