• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBAで URLの内容 が取得できない)

EXCEL VBAでURLの内容を取得できない

このQ&Aのポイント
  • EXCEL VBAでURLの内容を取得する際、一部のURLで取得ができない場合があります。
  • 特定のURL画面にインプット用の記述があると、内容の取得ができない可能性があります。
  • 解決方法を教えていただけると助かります。(使用環境:Win7 64B EXCEL2010 IE11)

質問者が選んだベストアンサー

  • ベストアンサー
  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.3

試してみて 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)
回答No.9

IE11と言う事で「拡張保護モード」が有効になってるのではないでしょうか。 無効にされるとか。

sei1miyata
質問者

補足

「拡張保護モード」は 無効となっていました。 ほかの方の別方法でも、ある方はダメだったというように、PCの設定等で なにかにより、微妙な支障がでてくるということなのでしょうか ありがとうございました。

  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.8

>単純に このままでは 不能なのでしょうか >JavaScriptだから、何かの設定が必要とかがあるのでしょうか 確認してみましたが、示されてる「Weblio英単語帳」のページでは上手くいきますが。

sei1miyata
質問者

補足

示していただいた内容を  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)
回答No.7

ExecWBでなくても、 objIE.Document.body.createTextRange.execCommand "Copy" で可能かも。

sei1miyata
質問者

補足

ためしてみましたが、『「空欄」のテキストエリア(=ログインメールアドレスの欄)が選択されてしまうため  ---』という部分で、不能になっているようです。 なにもないページでは、できました。

  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.6

>objIE.document.forms("login").Item ("email"), Blur() 失礼。JavaScriptの構文なので()は余計でした。ついでに.のはずがカンマになってました。 objIE.document.forms("login").Item ("email").Blur

sei1miyata
質問者

補足

単純に このままでは 不能なのでしょうか JavaScriptだから、何かの設定が必要とかがあるのでしょうか

  • oka_me
  • ベストアンサー率86% (26/30)
回答No.5

#1です。補足に対しまして・・・ 例えば1個目のURLは、IEの通常操作でページを開くと、「ページそのもの」にフォーカスがある(と思われます)ので、そのままの状態ですべて選択(Ctrl+A)でコピペできますが、2個目のURLの場合、開いた時点で「空欄」のテキストエリア(=ログインメールアドレスの欄)が選択されてしまうため、空のテキストエリアから全て選択しようとしても、空ですので当然何も選択されません。 (これが例えばテキストエリアにデフォルト仕様で何か文字が入力されている場合、その文字列がコピーされエクセルに貼り付けられるかと思います) 私の知識が不足していたために汎用性のある解決法が思い付きませんでしたが、#3の方が回答されているように「objIE.Document.body.Focus」を追加することで基本的にどのURLでも貼り付けられるようになるかと思います。 (私も勉強になりました、ありがとうございます。。。) #3の方の補足で「他のウェブページが開いていると~」とありましたが、少なくとも私の環境ではその状態でも問題無く動作しました。。

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.4

直前の回答者ですけど 実行時に、ほかのウェブページを表示していると 下のコードを使ってもだめみたいです。 objIE.Document.body.Focus

  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.2

私も知らなかったので「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などの勉強にも使える英語学習サービス~」で、 ログインメールアドレスのテキストボックスにフォーカスが当たってるのでそれを外すとか。

sei1miyata
質問者

補足

Blur() のところで ストップしています どんな DIM が 必要なのでしょうか お教えください。

  • oka_me
  • ベストアンサー率86% (26/30)
回答No.1

対象のURLを開いた際にCtrl+Aを押してみて、ページ全体が選択されれば読み込めるページ、何も選択されなければ読み込まれないページかと思います。 開いた際に例えばテキストエリアにフォーカスが移動されてしまうようなページは(検索サイト系はそのような所が多そうですが)、そのままではページ全体の選択がされないため読み込まれなくなってしまうかと思います。 例えば質問文にある2個目のURLはTABを2回押してフォーカスをテキストエリアの外に出してやった後にExecWB 17, 0で選択できますので DoEvents の下あたりに SendKeys "{tab}" SendKeys "{tab}" のような記述を追加してやればとりあえずこのケースでは解決できると思いますが、この方法ではURL毎に対処法を変えてやる必要がありそうなのであまり良い回答ではないかと思われます。。。 (例えば、YahooのトップページなどはTABを7回ぐらい押してやっとフォーカスが外れます) もしかしたら他の方がもっと汎用性のある解決法を提示してくださるかもしれませんm(_ _)m

sei1miyata
質問者

補足

『開いた際にCtrl+Aを押してみて』というのは、タイミングがあるのでしょうか? どんな状態が 『ページ全体が選択される』『されない』なのかを 具体的に教えていただけますでしょうか? 下段の回答のほうは、うまくできました。

関連するQ&A

専門家に質問してみよう