ExcelやAccess等のVBAのMacro内で、コピー&ペーストの処理が含まれているとします。そのマクロの実行中、別のアプリケーションで手作業によるコピー&ペーストをしたり、また別のアプリケーションのMacroがコピー&ペーストを実行した場合、それぞれのコピー&ペースト間でデータがまぎれてしまうといったことは起こりうるでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/08/05 01:09:42
  • 終了:2009/08/05 23:47:39

回答(1件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912009/08/05 09:06:20

ポイント60pt

連続した処理で、コピーとペーストの間が短ければあまり起きないとは思いますが、

クリップボードはWindows 全体の共有資源ですから、可能性はありそうです。

下記のように実験してみたところ無理やりその現象を起こすことはできました。

Sub CopyAndPaste()
    Range("A1").Copy
    MsgBox "Hello"
    Range("A6").Select
    ActiveSheet.Paste
End Sub

でメッセージボックス表示中に他のアプリケーションでコピーを実行すると、その内容が A6

に入ります。


そのようなことを防止するためには、

Sub CopyAndPaste()
    Range("A6").Value = Range("A1").Value
End Sub

Sub CopyAndPaste()
    Range("A1").Copy Destination:=Range("A6")
End Sub

のように一回の処理でコピーが完了するように VBA 側での工夫も必要でしょう。

コピー & ペーストは VBA の処理の中では時間のかかる方法ですから、可能であれば

代入などに置き換えたほうがよいと思います。


逆にクリップボードを使用したいという局面もあるかと思いますが、その際は下記が参考に

なるかと思います。

http://officetanaka.net/excel/vba/tips/tips20.htm

id:zkq

やっぱりそうですね。ありがとうございました

2009/08/05 23:47:18

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません