Excelのマクロから他ソフトのデータを取り入れています。
Sendkeysを使ってソフトのページを切替えたいんですが、ページが切り替わらないうちにページ表示後用のキーが立て続けに送られてしまい旨くいきません。
今やっているのは、起動済みオフラインのIEでHP上の目次からリンクのページ内容をつぎつぎシートへ写す処理です。
SendKeys "{tab}", True でHPの次行の目次に移って
SendKeys "{enter}", True でページを開いて
SendKeys "^{a}", True 全て選択
SendKeys "^{c}", True コピー
この後Excelのシートにテキストで張付ける。
で、IEに戻ってまた"{Tab}"で次行へ移って・・
ところが2番目の"{enter}"で新ページが開き終わらないうちに3,4番目のキーが送られてしまう様です。
ページが開き終わってから次のキーを送るにはどうすればいいでしょうか?
No.1ベストアンサー
- 回答日時:
sendKeysは単なるキーエミュレートなので
処理終了まで待つというようなことは難しいでしょう。
こんな感じでエクセルからオブジェクトとしてIEを
管理するのが妥当じゃないでしょうか?
Set oIE = CreateObject("InternetExplorer.application")
oIE.Visible = True
oIE.navigate2 ("http://www.yahoo.co.jp")
Do While (oIE.busy)
Application.Wait (Now + TimeValue("0:00:01"))
Loop
txt = oIE.document.body.innerText
MsgBox txt
No.2
- 回答日時:
こんばんは。
>起動済みオフラインのIEでHP上の目次からリンクのページ内容をつぎつぎシートへ写す処理です。
昔、私もそうやって、ある程度は、Application.Wait Now + TimeValue("00:00:02")[時間は任意]とやって、「概ね」成功していたけれども、やはり、IEのObjectで、 Document.all から行ったほうが確実です。自分で探すしかありませんが、Document.all の Type を抜き出して、その型から、作業方法を見つけます。慣れと、多少、HTMLの知識が必要になってきます。
ところで、
>SendKeys "^{a}", True 全て選択
>SendKeys "^{c}", True コピー
それから、Sendkey でも、こちらは、{a} {c} と{} は必要ありませんが、#1 さんのご指摘の通り、body.InnerText で抜き出すのが簡単かと思います。
そうでなかったら、データ-外部データの取り込み-新しいWebクエリを作ったほうが楽です。
私もApplication.Wait でやってみたんですが、一回目は成功し二回目はダメだったりと色んな結果が出ます。
そのソフトのキー操作だけで出来る便利な方法だと思いましたが、やっぱりネットやVBAのコードを勉強しないとダメですね。(^_^;
Webクエリの方は各目次のリンク先のような一つ下の層までは取込めない様なので諦めました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでPDFのアクティブページ番号取得 1 2023/05/25 12:41
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Mac OS Macで今あるファイルの連番(ページ番号)に足し算をしてリネームしたい 1 2022/10/12 17:22
- Windows 10 複数開いているedgeページやEXCELから、特定のページをピンポイントで開くには 3 2022/11/10 00:48
- Excel(エクセル) ExcelのVBAでWordを読み取り専用で開いて、見たいページに自動で移動する方法を教えて頂きたい 4 2022/07/27 10:39
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
【sendkeysメソッドが動かずに苦慮しております】
Visual Basic(VBA)
-
VBAでの SendKeysの変数指定方法
Excel(エクセル)
-
-
4
エクセルVBAで SendKeys {TAB}""
Excel(エクセル)
-
5
エクセル VBA SendKeys ループ処理について
Excel(エクセル)
-
6
エクセルの印刷ダイアログをSendkeysで操作したい。
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
エクセルのカメラ機能について
-
VBAで CTRL+HOMEの位置へ移動...
-
Excelマクロ 差分抽出の方法が...
-
時間帯の重複を除いた集計について
-
Excelで日付変更ごとに、自動的...
-
【Excel】マクロでグラフ系列に...
-
Googleスプレッドシート再計算...
-
別々のシートの表をピボットテ...
-
エクセルで複数の条件を抽出し...
-
トランジスタの選び方
-
他のシートの一番下の行データ...
-
excel2013で、マスターシートの...
-
(VBAにて)日付でデータを抽出す...
-
【エクセル」 特定のセルで条件...
-
excelの不要な行の削除ができな...
-
エクセル マクロ "特定の日付...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
Excelで日付変更ごとに、自動的...
-
excelの不要な行の削除ができな...
-
EXCELで2つのファイルから重複...
-
トランジスタの選び方
-
VBAで CTRL+HOMEの位置へ移動...
-
別々のシートの表をピボットテ...
-
Googleスプレッドシートフィル...
-
EXCEL 複数行のデータを1行にま...
-
他のシートの一番下の行データ...
-
エクセルで名簿を50音で切り分ける
-
(VBAにて)日付でデータを抽出す...
-
エクセルのデータ振り分け方法...
-
EXCEL の表を一行ずつシートに...
-
エクセル VBA VLOOKUP
-
【エクセル」 特定のセルで条件...
-
エクセルのカメラ機能について
おすすめ情報