- Excelマクロを実行したら、
「クリップボードに問題がありますが、このブックにコンテンツを貼り付けることができます」
というエラーメッセージが出てきました。 - VBAコードの不要なコピー処理を削除することで解決しました。
1. クリップボードエラーが出てきた
Excelでマクロ作業を使っていたら、
「クリップボードに問題がありますが、このブックにコンテンツを貼り付けることができます」
というエラーメッセージが表示されました。

これは、クリップボードの機能に問題が生じていることを示しています。
クリップボード エラー
別のアプリケーションで使用されているため、コンテンツをクリップボードにコピーできませんでした。このブック内にコンテンツを貼り付けすることはできますが、他のアプリケーションでは使用できません。
1-1. ほかで「貼付け」ないなら無視してもよい

何が問題なの?
「途中のコピーでWindowsのクリップボードに記憶できなかった」ことを示しています。
とはいえ、VBAでの処理の途中にあるコピーは、別のアプリケーションで利用しないことも多いです。
その場合は無視してもよいです。
1-2. リモートデスクトップのクリップボード同期で競合?
私の場合は、「Chrome リモートデスクトップ」で外部からExcel VBAを開始したときに表示されました。

ただ、「クリップボードを同期する」のチェックを外しても、エラーは消えませんでした。
1-3. マクロの不要な「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」がエラーの元でした。
2. コピーしたメモリをクリアしている

「Application.CutCopyMode = False
」っていうのは、何なの?
Excelでコピー&ペースト操作を行った際、特にVBAを使用しているとき、Application.CutCopyMode = False
というコードが自動的に挿入されることがあります。
「Application.CutCopyMode = False
」は、Excelのコピー・カット状態を終了させます。
- コピー・カットした後にセル範囲で点滅する線(ビジュアルインジケータ)が消え、
- クリップボードに格納されていた内容はクリアされ、
- ステータスバーがデフォルトの状態に戻ります。
コピー・ペーストの後には、Application.CutCopyMode = False
をコードに挿入して、メモリを解放することが一般的な習慣になっています。

不要なコピーとクリアが連続していたから、処理がおかしくなったのかな。
2-1. VBAから管理できるのはExcelのクリップボード
ただし、「Application.CutCopyMode = False
」では、Excelのクリップボードの内容をクリアするものの、Windowsのクリップボードには影響を与えません。
つまり、ExcelのクリップボードとWindowsのクリップボードは別々に管理されているのです。
Excelにはシステムクリップボードとは別に、複数の項目を格納できる追加のクリップボードがあるわけです。

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

今回のエラーでは、VBAでのコピー処理が、Windowsのクリップボードにアクセスできなかったようです。
3. Excelのクリップボードをクリアするさまざまな方法
余談ですが、まれにExcelのクリップボードの内容が完全にクリアされないことがあるようです。
クリップボードに多くのデータが残って、Excelがハングする原因になるのです。
Excelのクリップボードエラーに関して、いくつかの対処法があります。
- クリップボードの履歴をクリアする:
Excelで多くのファイルをコピーしている場合には、クリップボードの履歴をクリアします。
Excelの「ホーム」タブにある「クリップボード」グループから「クリア」を選択します。 - 他のアプリケーションを閉じてみる:
Excel以外のすべてのアプリケーションを閉じてから再度試してみてください。 - ライブプレビューを無効にする:
Excelの「ファイル」タブから「オプション」を開き、「一般」タブの「ライブプレビューを有効にする」のチェックを外します。 - Linkedinの機能を無効にする:
「Linkedinの機能を有効にする」オプションを無効にすると解決することがあります。 - Excelの再インストール:
設定変更でもうまく行かない場合、Microsoft Officeを再インストールすることで問題が解決することがあります。
4. Windowsのクリップボードの管理

ついでですが、Windowsのクリップボードをクリアする方法も見ておきます。
4-1. クリップボード履歴の設定のON/OFF
Windows 10では、設定画面から「クリップボードの履歴」機能をON/OFFすることができます。
この設定を切り替えることで、問題が解消する場合があります。
4-2. コマンドでクリップボードの中身をクリアする(clip)
また、クリップボードの中身を手動でクリアする方法もあります。
cmd /c echo . | clip
このコマンドでは、空文字列をクリップボードに入れています。
clip
「clip」コマンドは、テキストやその他のデータをWindowsのクリップボードにコピーします。
コマンドラインやスクリプトからクリップボードに直接データを送ることができるので、自動化スクリプトなどでよく利用されます。

Windowsのクリップボードって、clipコマンドでアクセスできるんだね。
5. 補足
- QVBAやExcelでクリップボードエラーが発生した場合、どのように対処すればいいですか?
- A
エラーメッセージを確認し、ExcelやVBAの設定を見直してください。
また、他のアプリケーションがクリップボードを使用していないかもチェックしましょう。
- QExcelで「内容をクリップボードにコピーできませんでした」というエラーが出るのはなぜですか?
- A
このエラーは通常、他のアプリケーションがクリップボードを使用している場合に発生します。
他のアプリケーションを閉じてから再度試してみてください。
- QExcel VBAでクリップボードの内容をクリアできないのはなぜですか?
- A
VBAのコードに問題があるか、他のプロセスがクリップボードを占有している可能性があります。
コードを見直し、他のアプリケーションがクリップボードを使用していないか確認してください。
- Qクリップボードに関連するエラーの原因は何ですか?
- A
クリップボードエラーは、メモリ不足、プログラムの競合、または外部アプリケーションによるクリップボードの占有によって発生することが多いです。

Excelとほかのアプリケーションの関係がややこしいとエラーになります。
たとえば、クリップボード拡張アプリなども影響しますね。
![[Excel] 急に個人用マクロが使えなくなった](https://chiilabo.com/wp-content/uploads/2024/02/image-23-2-320x198.jpg)
