Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1968 / 13645 ツリー ←次へ | 前へ→

【70753】クリップボードへのコピーをトリガーにしたい DS 11/12/26(月) 9:30 質問[未読]
【70754】Re:クリップボードへのコピーをトリガーに... UO3 11/12/26(月) 11:03 回答[未読]
【70756】Re:クリップボードへのコピーをトリガーに... DS 11/12/26(月) 11:23 回答[未読]
【70755】Re:クリップボードへのコピーをトリガーに... UO3 11/12/26(月) 11:21 回答[未読]
【70757】Re:クリップボードへのコピーをトリガーに... DS 11/12/26(月) 11:29 回答[未読]
【70758】Re:クリップボードへのコピーをトリガーに... DS 11/12/26(月) 12:18 お礼[未読]

【70753】クリップボードへのコピーをトリガーにし...
質問  DS  - 11/12/26(月) 9:30 -

引用なし
パスワード
   ひとつのテキストファイルから、範囲を指定しながら、複数のデータを取り込みます。

一旦、クリップボードにコピーしたものを、エクセルVBAに取り込み、
文字列の処理をした後、セルに貼り付けようとしています。


今は、ユーザーフォームに、実行ボタンを複数作っておき、マクロを実行後、
1.クリップボードにコピー
2.実行ボタン1を押す
3.クリップボードにコピー
4.実行ボタン2を押す
を繰り返しています。


これを、実行ボタンを押さずに、クリップボードに入力があったら、そのまま処理に移れないか、と模索しています。

無限のDOループを回して、クリップボードの中身を監視させようとしたら、エクセルから出れなくなってしまいました。

何か、方法がありましたら、ご教授お願いします。

【70754】Re:クリップボードへのコピーをトリガー...
回答  UO3  - 11/12/26(月) 11:03 -

引用なし
パスワード
   ▼DS さん:

こんにちは

クリップボードのデータの有無の判定と、あった場合の処理についてはすでにコードをお持ちだとして
監視ループの一例です。以下の例では、 Esc キーで監視ループを終了しています。

Option Explicit

Private Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long

Sub TestLoop()
  Dim rtn As Long
  
  Do
    rtn = GetAsyncKeyState(vbKeyEscape) 'エスケープキー
    If rtn = 0 Then
      'ここで必要な判定と処理をします
      DoEvents
      DoEvents
      DoEvents
    Else
      MsgBox "監視を停止します"
      Exit Do
    End If
  Loop
End Sub

【70755】Re:クリップボードへのコピーをトリガー...
回答  UO3  - 11/12/26(月) 11:21 -

引用なし
パスワード
   ▼DS さん:

もう1つ、APIを使わない方法を。
2つのプロシジャをそれぞれ、ボタンに登録するか、あるいはマクロショートカットキーを紐つけ。
監視開始で監視に入り、監視停止で監視を終了します。

Option Explicit

Dim Flag As Boolean

Sub 監視開始()
  MsgBox "監視を開始します"
  Flag = True
  Do While Flag
    'ここで判定と処理
    Range("A1").Value = Now()  'あくまでサンプルです
    DoEvents
    DoEvents
    DoEvents
  Loop
  MsgBox "監視を停止しました"
End Sub

Sub 監視停止()
  Flag = False
End Sub

【70756】Re:クリップボードへのコピーをトリガー...
回答  DS  - 11/12/26(月) 11:23 -

引用なし
パスワード
   ▼UO3 さん:

早速の回答を、ありがとうございます。

GetAsyncKeyState のところを、 ClipboardFormats を絡めてやればよさそうですね。

Option Explicit と Private Declare Function というのは、判らないので、調べてみます。

助かりました。
ありがとう御座います。

【70757】Re:クリップボードへのコピーをトリガー...
回答  DS  - 11/12/26(月) 11:29 -

引用なし
パスワード
   ▼UO3 さん:

またまた、ありがとう御座います。

DoEvents というのがあったのですね。
検索してみて、どんなものか、大体わかりました(と思う)

私が作ったループは、これが無かったから、EXCELから抜けられなくなっていたのかな、と思います。

こっちの方が、使いやすいかな、と思います。
色々試して見ます。

【70758】Re:クリップボードへのコピーをトリガー...
お礼  DS  - 11/12/26(月) 12:18 -

引用なし
パスワード
   ▼UO3 さん:

これで、うまくいけそうです。
まさに望んでいた方法です。

ありがとう御座いました。

1968 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free