- ベストアンサー
EXCEL VBAでURLの内容を取得できない
- EXCEL VBAでURLの内容を取得する際、一部のURLで取得ができない場合があります。
- 特定のURL画面にインプット用の記述があると、内容の取得ができない可能性があります。
- 解決方法を教えていただけると助かります。(使用環境:Win7 64B EXCEL2010 IE11)
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
試してみて objIE.navigate StrUrl While (objIE.readyState <> 3 And objIE.readyState <> 4) Or objIE.busy = True DoEvents Wend DoEvents objIE.Document.body.Focus
その他の回答 (8)
- kumatti1
- ベストアンサー率60% (73/121)
IE11と言う事で「拡張保護モード」が有効になってるのではないでしょうか。 無効にされるとか。
- kumatti1
- ベストアンサー率60% (73/121)
>単純に このままでは 不能なのでしょうか >JavaScriptだから、何かの設定が必要とかがあるのでしょうか 確認してみましたが、示されてる「Weblio英単語帳」のページでは上手くいきますが。
補足
示していただいた内容を While (objIE.readyState <> 3 And objIE.readyState <> 4) Or objIE.busy = True DoEvents Wend DoEvents objIE.document.forms("login").Item("email").blur Workbooks.Add と修正して、試しましたが、Workbooks.Add へ いかずに Er1:エラーへ 移動します。 なにかの 原因・影響があるのでしょうか?
- kumatti1
- ベストアンサー率60% (73/121)
ExecWBでなくても、 objIE.Document.body.createTextRange.execCommand "Copy" で可能かも。
補足
ためしてみましたが、『「空欄」のテキストエリア(=ログインメールアドレスの欄)が選択されてしまうため ---』という部分で、不能になっているようです。 なにもないページでは、できました。
- kumatti1
- ベストアンサー率60% (73/121)
>objIE.document.forms("login").Item ("email"), Blur() 失礼。JavaScriptの構文なので()は余計でした。ついでに.のはずがカンマになってました。 objIE.document.forms("login").Item ("email").Blur
補足
単純に このままでは 不能なのでしょうか JavaScriptだから、何かの設定が必要とかがあるのでしょうか
- oka_me
- ベストアンサー率86% (26/30)
#1です。補足に対しまして・・・ 例えば1個目のURLは、IEの通常操作でページを開くと、「ページそのもの」にフォーカスがある(と思われます)ので、そのままの状態ですべて選択(Ctrl+A)でコピペできますが、2個目のURLの場合、開いた時点で「空欄」のテキストエリア(=ログインメールアドレスの欄)が選択されてしまうため、空のテキストエリアから全て選択しようとしても、空ですので当然何も選択されません。 (これが例えばテキストエリアにデフォルト仕様で何か文字が入力されている場合、その文字列がコピーされエクセルに貼り付けられるかと思います) 私の知識が不足していたために汎用性のある解決法が思い付きませんでしたが、#3の方が回答されているように「objIE.Document.body.Focus」を追加することで基本的にどのURLでも貼り付けられるようになるかと思います。 (私も勉強になりました、ありがとうございます。。。) #3の方の補足で「他のウェブページが開いていると~」とありましたが、少なくとも私の環境ではその状態でも問題無く動作しました。。
- ki-aaa
- ベストアンサー率49% (105/213)
直前の回答者ですけど 実行時に、ほかのウェブページを表示していると 下のコードを使ってもだめみたいです。 objIE.Document.body.Focus
- kumatti1
- ベストアンサー率60% (73/121)
私も知らなかったので「html Focus 外す」でググりました。 objIE.navigate StrUrl While (objIE.readyState <> 3 And objIE.readyState <> 4) Or objIE.busy = True DoEvents Wend DoEvents objIE.document.forms("login").Item ("email"), Blur() 「Weblio英単語帳~TOEICやTOEFLなどの勉強にも使える英語学習サービス~」で、 ログインメールアドレスのテキストボックスにフォーカスが当たってるのでそれを外すとか。
補足
Blur() のところで ストップしています どんな DIM が 必要なのでしょうか お教えください。
- oka_me
- ベストアンサー率86% (26/30)
対象のURLを開いた際にCtrl+Aを押してみて、ページ全体が選択されれば読み込めるページ、何も選択されなければ読み込まれないページかと思います。 開いた際に例えばテキストエリアにフォーカスが移動されてしまうようなページは(検索サイト系はそのような所が多そうですが)、そのままではページ全体の選択がされないため読み込まれなくなってしまうかと思います。 例えば質問文にある2個目のURLはTABを2回押してフォーカスをテキストエリアの外に出してやった後にExecWB 17, 0で選択できますので DoEvents の下あたりに SendKeys "{tab}" SendKeys "{tab}" のような記述を追加してやればとりあえずこのケースでは解決できると思いますが、この方法ではURL毎に対処法を変えてやる必要がありそうなのであまり良い回答ではないかと思われます。。。 (例えば、YahooのトップページなどはTABを7回ぐらい押してやっとフォーカスが外れます) もしかしたら他の方がもっと汎用性のある解決法を提示してくださるかもしれませんm(_ _)m
補足
『開いた際にCtrl+Aを押してみて』というのは、タイミングがあるのでしょうか? どんな状態が 『ページ全体が選択される』『されない』なのかを 具体的に教えていただけますでしょうか? 下段の回答のほうは、うまくできました。
補足
「拡張保護モード」は 無効となっていました。 ほかの方の別方法でも、ある方はダメだったというように、PCの設定等で なにかにより、微妙な支障がでてくるということなのでしょうか ありがとうございました。