[[20200804160051]] 『ExcelのCopyPictureでのエラーについて』(i_hiro) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ExcelのCopyPictureでのエラーについて』(i_hiro)

Excel VBAにて対象セル範囲を画像としてコピーて貼り付けを行うマクロですが、パソコンの画面をロックしていない場合では、正常に実行します。
ただし、パソコンをロックした状態で実行すると、CopyPictureのところで、エラーが発生して、「実行時エラー '1004': クリップボードを空にできません。別のアプリケーションがクリップボードを使用している可能性があります。」というエラーメッセージが表示されます。
パソコンをロックした状態でも、正常に実行できる方法はないでしょうか。
よろしくお願いします。

(サンプルマクロ)

Sub sample()

      Range("A1:K10").Select

      Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture

      ActiveSheet.PasteSpecial Format:="図 (拡張メタファイル)", Link:=False, _
          DisplayAsIcon:=False
  End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 >パソコンの画面をロック

 って、何でしょう?
 独自の言葉を使っても通用しませんよ。
(Why) 2020/08/04(火) 16:58

いや、WIN+L で切り替える等の、ロック画面の事でしょう。 確かに現象が再現します。
(ロック中は操作できないので、OnTimeを使って、ロックした後に動作させるよう手を入れる必要はありますが)

自分でクリップボードオブジェクトを開いておいたら?、というのも試してみましたが、駄目でした。 シート丸ごとコピーなら邪魔されませんでしたが、コピーしたシートのセル範囲を画像としてコピーしようとすると、同じ現象になりました。

同様の現象は、何らかのクリップボード監視機能のあるアプリ(Skype等)と同時に使おうとすると発生していましたが、ロック画面で必ず再現となると、ロック画面自体がセキュリティ対策か何かで、裏でなにかやっているのかも知れません。
Webを調べてみても、対策は見つからなかったので、諦めるしかなさそうです。
(???) 2020/08/04(火) 17:09


言葉足らずで、すみませんでした。
パソコンのロック画面のことです。

私の方でも、いろいろWebで調べているのですが、いい方法がありませんでした。
(i_hiro) 2020/08/04(火) 17:18


 >WIN+L で切り替える等の、ロック画面の事でしょう。

 試してみました。
 何か解らないけど、解除?してもポインタが途中で動かなくなりました。
 触らない方が賢明と感じました。
 お呼びでないようで、失礼しました。
(Why) 2020/08/04(火) 17:20

ちなみに、以下のコードから間接的にsampleを実行する事で、簡単に再現できます。
 Private Declare PtrSafe Function LockWorkStation Lib "user32.dll" () As Long

 Sub test()
    Application.OnTime Now() + TimeValue("00:00:05"), "sample"
    Call LockWorkStation
 End Sub

ロック画面になってから5秒待って、ロック解除してください。

なお、Skypeとの競合は、ブラウザを全部閉じてから実行すれば避けられますが、私の環境ではそれでも再現したので、OfficeまたはWindowsの進化によって発生するようになった現象だろうと思います。(MSにバグだろ!?、と報告すれば認めてもらえそうですが、バグだと判明しても決して直さないのがMSです…)
(???) 2020/08/04(火) 17:47


いろいろ調べていただき、ありがとうございました。
もうすこしやってみて、どうしてもうまくいかないときは、MSに問い合わせてみます。
(i_hiro) 2020/08/05(水) 08:16

いや〜、問い合わせるだけ無駄と思いますよ。

不具合は認めてくれるのですが、認めるまでに何か月もかかり、認めたとしても、現行のExcelは直さない、将来のバージョンで直すかも知れないけど確約はできない、という回答がもらえるだけです。 日本の会社だと、不具合なら即直せ、無料で対応しろ、という無茶振りが通用しますが、米国の会社には全く通用しません。

不具合である、という一筆を書いてもらう事はできますが、だからといって、できません、という回答をエンドユーザーが認める訳では無く、マクロを書く人が代替案を探して苦労するのは変わりませんから。
(不具合なのは判ったが、何とかしろ。と言われるだけ)

直接申し入れるのではなく、サポートページなら無料だし反応も早いですが、MSの開発者が答えている訳では無いので、一般の人と同レベルの受け答えしかしてもらえないです。(難しい内容は、再インストールしろ、となります)

マクロ実行中はロック画面にしない、という運用にはできませんか? スクリーンセーバー抑止ならAPIで可能ですよ?(セキュリティの意味でロック画面にしているのであれば駄目ですが…)
(???) 2020/08/05(水) 10:16


アドバイスありがとうございます。

現在、MOUSELRというフリーソフトを使用することによって、スクリーン セーバーの起動を抑止していますが、このような方法ではなく、ロック画面になっていても、正常に動作する方法がないかと思い、この掲示板に質問しました。
(i_hiro) 2020/08/05(水) 15:15


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.