複数のテキストボックスの中身をコピーして、他のウインドウの同数のテキストボックスにその内容をペーストする必要性が出てきました。

データ1+TAB+データ2+...というようにコピー&ペーストできれば良いと考えているのですが、うまくいきません。
また、コピー元をテキストボックスにせずにテキストエディタにデータ1TABデータ2TAB...と記述してコピー&ペーストをしてもうまくいきません。
おそらく、データ1の入力後、ミリ秒単位で時間を置いてTABを入力し、という作業を繰り返さなければならないと思うのですが、Windowsでどのようにすればそれができるのかがわかりません。
どのようにすれば実現できるでしょうか?また、一括でたくさんのデータを扱うので、VBでの作成例などを教えていただけると大変助かります。うまくできた場合は高ポイント差し上げます。
イメージ的にはオンラインソフトの「ID Manager」の入力項目がもっとたくさんあるバージョンです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/03/03 19:04:41
  • 終了:--

回答(1件)

id:zifree No.1

zifree回答回数175ベストアンサー獲得回数62004/03/03 20:06:39

ポイント40pt

http://www.hatena.ne.jp/1078308281#

複数のテキストボックスの中身をコピーして、他のウインドウの同数のテキストボックスにその内容をペーストする必要性が出てきました。 データ1+TAB+データ2+...とい.. - 人力検索はてな

VB6での方法です。

まず、ミリ秒単位でウェイトを挟む関数です。

標準モジュールに

Public Declare Function GetTickCount Lib ”kernel32.dll” () As Long

と記述し、

Public Sub Waiter(TT As Long)

Dim T1 As Long, T2 As Long

T1 = GetTickCount()

Do Until T2 - T1 >= TT

T2 = GetTickCount()

DoEvents

Loop

End Sub

以上のコードを書いてください。

例えば

Call Waiter(1000)

で1000ミリ秒=1秒のウェイトを挟む事が出来ます。

WindowsAPIのSleepを使う手もありますが、その場合はプログラムの動作自体が止まってしまいます。ケースバイケースですが、前述の方法の方がいいと思います。

次にVBからキー入力を送る方法ですが、標準で用意されているSendKeysステートメントを使う方法とWindowsAPIのkeybd_eventを使う方法、WindowsAPIのSendInputを使う方法があります。まずSendKeysステートメントは最初から用意されているステートメントのため使うのが簡単ですが、不具合が多いです。

次にWindowsAPIのkeybd_eventですが、Windows2000やXPではMS非推奨の方法です。

一番安全なのがWindowsAPIのSendInputを使う方法です。

これならWindows2000でも大丈夫です。

id:smileless

詳しいご説明、ありがとうございます。

ミリ単位でWaitをはさむ処理に関しては、

Private Declare Function GetTickCount Lib ”kernel32” () As Long

と記述することで実装できました。

その後の処理に関しては現在コードを書いているところです。

2004/03/03 20:35:24

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

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

トラックバック

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

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

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