• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:webページのみのURLを取得したい)

webページのURLを取得する方法

このQ&Aのポイント
  • 「Sub testa()」のVBAコードを実行することで、アクティブなウェブページのURLを取得できます。ただし、フォルダのパスも含まれてしまう場合があります。
  • 正規表現を使用して、URLの末尾が「.html」で終わるかどうかをチェックすることで、ウェブページのみのURLを取得することができます。
  • ただし、一部のウェブページは「.html」で終わらないため、正確なURLを取得するには別の方法を試す必要があります。

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

#1 DOUGLAS_ です。 >ウォッチウインドウを見るとoutlookの時はnameがないようなのですが >こういう場合どうやって回避すればいいのでしょうか? >Nameではなく >LocationName に >「LocationName = "outlook:%26」  ぉぉ!  そこまでお解りなのでしたら、私が、なぜウォッチウィンドウの画像を載せたかがお解りでしょう。  別に If objIE.Name = "Windows Internet Explorer" Then に限ったことではありません。  「全てのオブジェクトが持っているプロパティ」で、しかも、「IEが他のオブジェクトと必ず違う、特定の値を持って」いれば、「プロパティ」は「name」だろうが「LocationName」だろうが何でも構いません。  むしろ、こうしてエラーが出るたびに、変えることによって、より汎用性の高いコードになるということです。 For Each objIE In CreateObject("Shell.Application").Windows の後にでも Debug.Print objIE.LocationURL Debug.Print objIE.~~ を入れて「~~」のところにいろんなプロパティをはめ込んでみれば、イミディエイトウィンドウに吐き出された値を検証することによって、何が良いかが分かります。

ngiajeqgi4
質問者

お礼

ウォッチウィンドウはこうやって使って行くのですね。 しかしなぜか今日同じコードを実行したらアウトルックのウインドウは取得されず、 最初にご提示いただいた方法で解決できました。(ラッキー?) しかしまたアウトルックが取得されてしまうかもしれないので LocationNameでアウトルックをはじくIFステートメントを入れておきます。 再度ご回答いただきありがとうございます。

その他の回答 (1)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

myStr = myStr & vbCrLf & objIE.LocationURL を If objIE.Name = "Windows Internet Explorer" Then と End If で挟んでください。 CreateObject("Shell.Application").Windows は「IE」と「(普通の)エクスプローラ」の両方を扱うオブジェクトです。  VBE(Visual Basic Editor)で「objIE」をウオッチ式に追加し、 ウオッチウィンドウで比較してください。  「IEの場合」と「(普通の)エクスプローラ」の場合を比較してみてください。  なお、後ろの方で使うのかも知れませんが、お示しのコードの範囲では Set objRE = CreateObject("VBScript.RegExp") は不要です。

ngiajeqgi4
質問者

お礼

Set objRE = CreateObject("VBScript.RegExp")は不要でしたね。 間違えて入れてしまいました。 CreateObject("Shell.Application").Windows がIEとフォルダを扱うオブジェクトだからなのですか。 ウォッチウインドウで確認したらnameが違っていました。 だからnameで条件分岐するのですね。 しかし、今outlook2010を立ち上げている状態なのですが outlookの順番になった時に (実行時エラー 438)オブジェクトは、このプロパティまたはメソッドをサポートしていません。 になります。 ウォッチウインドウを見るとoutlookの時はnameがないようなのですが こういう場合どうやって回避すればいいのでしょうか? Nameではなく LocationName に 「LocationName = "outlook:%26」 のような値が入っています。(個人情報?)

関連するQ&A