- ベストアンサー
webページのURLを取得する方法
- 「Sub testa()」のVBAコードを実行することで、アクティブなウェブページのURLを取得できます。ただし、フォルダのパスも含まれてしまう場合があります。
- 正規表現を使用して、URLの末尾が「.html」で終わるかどうかをチェックすることで、ウェブページのみのURLを取得することができます。
- ただし、一部のウェブページは「.html」で終わらないため、正確なURLを取得するには別の方法を試す必要があります。
- みんなの回答 (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.~~ を入れて「~~」のところにいろんなプロパティをはめ込んでみれば、イミディエイトウィンドウに吐き出された値を検証することによって、何が良いかが分かります。
その他の回答 (1)
- DOUGLAS_
- ベストアンサー率74% (397/534)
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") は不要です。
お礼
Set objRE = CreateObject("VBScript.RegExp")は不要でしたね。 間違えて入れてしまいました。 CreateObject("Shell.Application").Windows がIEとフォルダを扱うオブジェクトだからなのですか。 ウォッチウインドウで確認したらnameが違っていました。 だからnameで条件分岐するのですね。 しかし、今outlook2010を立ち上げている状態なのですが outlookの順番になった時に (実行時エラー 438)オブジェクトは、このプロパティまたはメソッドをサポートしていません。 になります。 ウォッチウインドウを見るとoutlookの時はnameがないようなのですが こういう場合どうやって回避すればいいのでしょうか? Nameではなく LocationName に 「LocationName = "outlook:%26」 のような値が入っています。(個人情報?)
お礼
ウォッチウィンドウはこうやって使って行くのですね。 しかしなぜか今日同じコードを実行したらアウトルックのウインドウは取得されず、 最初にご提示いただいた方法で解決できました。(ラッキー?) しかしまたアウトルックが取得されてしまうかもしれないので LocationNameでアウトルックをはじくIFステートメントを入れておきます。 再度ご回答いただきありがとうございます。