データ1+TAB+データ2+...というようにコピー&ペーストできれば良いと考えているのですが、うまくいきません。
また、コピー元をテキストボックスにせずにテキストエディタにデータ1TABデータ2TAB...と記述してコピー&ペーストをしてもうまくいきません。
おそらく、データ1の入力後、ミリ秒単位で時間を置いてTABを入力し、という作業を繰り返さなければならないと思うのですが、Windowsでどのようにすればそれができるのかがわかりません。
どのようにすれば実現できるでしょうか?また、一括でたくさんのデータを扱うので、VBでの作成例などを教えていただけると大変助かります。うまくできた場合は高ポイント差し上げます。
イメージ的にはオンラインソフトの「ID Manager」の入力項目がもっとたくさんあるバージョンです。
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でも大丈夫です。
詳しいご説明、ありがとうございます。
ミリ単位でWaitをはさむ処理に関しては、
Private Declare Function GetTickCount Lib ”kernel32” () As Long
と記述することで実装できました。
その後の処理に関しては現在コードを書いているところです。