[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エクセルマクロでWindowsのクリップボードを判定したい』(まいっか)
★やりたい事★
セルA1に判定文字列、ここでは仮に『すたーと』とします。
セルB1に判定文字列、ここでは仮に『すとっぷ』とします。
Windowsクリップボードの文字列が『すたーと』になった場合にtestというマクロを実行します。
Windowsクリップボードの文字列が『すとっぷ』になった場合判定のループを終了し、セルC1に『判定終了!』と表示する。
判定は1秒おきにループしています。(試行錯誤した中で1秒ループにしてますが。1秒でなくてもいいです。とにかく判定のループが1秒未満で発生して欲しい)
下記のマクロだと、Windowsクリップボードの中身が変更される数十回に1回とかの頻度で
.GetFromClipboardの行でエラーが出ます。
解決策もしくは、これ以外の方法でWindowsクリップボードのループ判定が出来るマクロがあれが、ご教授下さい!
↓↓↓↓ここからマクロです↓↓↓↓
Sub hantei()
Dim buf As String, buf2 As String, CB As New DataObject buf = "るーぷ"
With CB .GetFromClipboard buf2 = .GetText End With
If buf2 = Range("A1") Then
With CB .SetText buf .PutInClipboard End With Call test
Application.OnTime Now + TimeValue("00:00:01"), "hantei"
ElseIf buf2 <> Range("B1") Then
Application.OnTime Now + TimeValue("00:00:01"), "hantei"
Else
Range("C1").Value = "判定終了!"
End If
End Sub
[エクセルのバージョンの例]
Excel2010
[OSのバージョンの例]
WindowsXP
エラーメッセージは何だった? あと、だめもとで、With CB の下に
DoEvents DoEvents
といれてみるとどうなるかな?
(ぶらっと)
実行時のエラーで、
DataObjectGetFromClipboard OpenClipboardに失敗しました。
とでます。よろしくお願いします
で、DoEvents 挿入は試してみた? 試した結果も同じエラーだったということ?
(ぶらっと)
なるほど・・・
気になるのは、.GetFromClipboard ここからコード実行がスタートしているよね。 もし、クリップボードになにも入っていなければ、エラーになるような気がする。 いわゆるOfficeのクリップボードと、Windowsのクリップボードの違いについては、はなはだ浅い知識しか無く はずしているかもしれないんだけど、Application.ClipboardFormats(1) が True なら空っぽなので .GetFromClipboard でエラーになるかもしれないね。 (と、田中さんのサイトに書いてあったような気が・・・? アップしたコードも、田中さんのサイトあたりを参考にしたのかな?)
(ぶらっと)
まいっか
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.