質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

3869閲覧

エクセルVBAのsleep wait 処理について

hidelovers

総合スコア8

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/01/11 08:36

VBAのsleepやwaitに関してなのですが、
下記のコードを実行したところ、

1秒待機 ctrc+C 1秒待機 → 2秒待機 → 1秒待機 ctrl+V 
とならず
数秒待機 ctrc+C →  → ctrl+V  と連続動作になるのは何故でしょうか。

環境
VBA 7.1
エクセル 2016です

宜しくお願いします。

Sub コピー_Click() Application.Wait Now + TimeValue("0:00:01") SendKeys "^c", True Sleep 1000 SendKeys "{RIGHT}", True Application.Wait Now + TimeValue("0:00:01") Sleep 1000 SendKeys "{RIGHT}", True Sleep 1000 SendKeys "^v", True Sleep 1000 End sub

背景
VBAを眺めて2日程で、当面の目標は、会社の自部署経費管理のエクセル帳票のデータを、
IEで入力する会社の入力システムにコピペしたいです。(1アイテムにつき10項目程度)
まずはSendKey命令の力技で取り組んで見ようと思ってます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoorwm

2019/01/11 08:59

質問の項目とは関係ないですが確か、officeにはマクロの記録とかいうのがあって操作した動作をマクロに落としてくれると思いましたが、そちらは利用されませんか?
guest

回答3

0

回答の直接の回答としては、seastar3さんの通りですが、

当面の目標は、会社の自部署経費管理のエクセル帳票のデータを、
IEで入力する会社の入力システムにコピペしたいです。

を実現する手段として、SendKey を使うのは、不安定すぎるかと思います。

「VBA IE操作」などのキーワードでWEB検索するといろいろ解説ページが見つかるのでそれを参考にしてコーディングすることをお勧めします。

下記とかがお勧めです。

VBAによるIE自動制御

投稿2019/01/11 10:34

hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinobu_osaka

2019/01/12 10:57

ページのロード完了待ちとか怪しいですし、そもそもVBAのsendkeyはもともと不安定という…。私もIE操作の方が絶対的にオススメですね~。
hidelovers

2019/01/13 04:22

hatenaさん、shinobuさんコメントありがとうございます。 今までは移動した先輩がwindows7 IE7環境で作ったエクセルVBAを使っていたのですが、 会社パソコンがwindows10に変更になりエクセルVBAがうまく動かなくなってしまい、 先輩のコードを見てVBAの勉強を始めた次第です。 そのコードだと、 エクセルの値を変数に入れて、alt+tabで画面切り替えて、クリップボードに入れて、ctrl+vではりつけ tabで項目移動の繰り返しという力技でまずはそちらを参考にしてます。 リンク先参考に勉強させて貰います。
guest

0

ベストアンサー

VBAにおけるsendkeysの命令有効順番がおかしい。
の記事のように、キーストロークのバッファがたまっても吐き出すのは最後になってしまうので、

VBA

1SendKeys "^c", True 2DoEvents

のように、SekdKeys命令の直後にDoEvents命令でバッファを明示的に吐き出させる必要があります。

投稿2019/01/11 09:15

編集2019/01/11 09:16
seastar3

総合スコア2285

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hidelovers

2019/01/13 04:08

回答及び参考ページ紹介して下さり、ありがとうございました。 意図する動作を無事させることができました。
guest

0

解決しましたありがとうございます。

投稿2019/01/17 07:25

hidelovers

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問