【対処方法】クリップボードに値へ設定するときのエラーについて
よくユーザーフォーラムにある、クリップボードへ値を設定すると「クリップボードへの値の設定に失敗しました」というエラーが出てくるときの対処について対処方法を検討しました。
- エラーメッセージ
クリップボードへの値の設定に失敗しました。 - 現象の確認
Ver7以降、こちらについては出てくるということなので検証をしたところ以下の環境で出てきました。
OS:Windows 10 20H2 Home 64bit
確認方法:ループを1,000回繰り返しする設定を行い、クリップボードにカウンタの値を設定するように設定
エラー発生頻度:1,000回に1回は「クリップボードへの値の設定に失敗しました。」のエラーが発生
他条件:Windowsの設定でクリップボードの履歴をオンにしていると症状が発生
→こちらをオフにしていると症状は再現しませんでした。
クリップボードの履歴は「設定」→「システム」→「クリップボード」から確認出来ます。クリップボードの履歴を「オフ」にすれば解決できそうと思ったのですが、ユーザーフォーラムを見ているとオフにしてもエラーが出てくる場合があるということなので、もう少し確認していきたいと思います。
- 仮説
原因について、この前のイベントでNTT-ATさんに確認したところ、Ver6では発生しておらずVer7から発生しているということです。
Ver6から7に変更した際にクリップボードのノードについては何も変更されてないということです。
また、原因についてはNTT-ATさんではまだ判明していないということなのですが、もう少し確認してみたいと思います。①Windowsの不具合?
クリップボードの履歴をオンにするとこの現象が出てくるのでWindowsの不具合を考えました。
それなら他のRPAツールでも同じようなことが発生するはずなので、Googleで検索したところそれらしきものはありませんでした。
試しにMicrosoftのPower Automate Desktopでクリップボードに値を設定するものがあったので1万回同じように繰り返しやりましたが、何度試してもエラーは発生しませんでした。②Ver6から7にあげて速度が早くなったから?
速度が早くなりすぎて、エラーになるということも検討してクリップボードに値を設定する前に待機時間を「0.01秒」待機するようにしましたが、同じくエラーになりました。待機時間を「0.5秒」に設定しても同じでした。もう少し長く取るということも検討したのですが、シナリオの動作が遅くなるだけなので、こちらについてはあまり意味がないと判断しました③.netの不具合
Ver7から発生しているということなので、.netでの不具合?と思いこちらもGoogleで検索してみました
その結果、参考になる情報が何個かありました。.NETからクリップボードを設定する際のCLIPBRD_E_CANT_OPENエラー
テキストをクリップボードにコピーする際に、エラーが発生する場合があります。
【VB.NET】OpenClipboard に失敗しました/要求されたクリップボード操作に成功しませんでした。仮想マシンが入っている、セキュリティソフトが原因というのがありますが、一番参考になったのは
「エラーは出ているが実際にはちゃんとコピーされているようだ」ということです。試しにWinActorでエラーになった際に、Ctrl+Vで確認すると対象のテキストは正しくクリップボードに入っていました
- 対処方法
原因がはっきりせずに、わかっている事象だけで対処方法を考えました。
クリップボードに値へ設定を行う場合は以下のことを行うことをオススメします。①クリップボードの履歴をオフにする
→「設定」→「システム」→「クリップボード」でクリップボードの履歴をオフにする
②クリップボードの設定に例外処理を設定し、エラーが発生したときにはクリップボードの値を確認し、正しく設定されている場合はそのまま続行、正しくない場合は再度、クリップボードに値を設定→シナリオは以下のような形です。
こちらの設定を行い、1,000回クリップボードに値を設定を100回繰り返しても正しくクリップボードに保存出来ました。
少し手間ですが、根本対策が出てくるまではこちらで対応してもらればと思います。