- ベストアンサー
VBAで情報を付加して特定のWebページを開く方法
いつもお世話になっております。 ExcelVBAで、情報を付加したWebページを開こうとしていますが、うまくいかず困っております。 たとえば、Shell "explorer.exe http://www.post.japanpost.jp" は表示されますが、次は表示されません。 Shell "explorer.exe http://www.post.japanpost.jp/cgi-zip/zipcode.php?zip=1070052" VBAで、このような情報を付加して、ブラウザを起動させるには、どうしたらよろしいでしょうか。 どうか、どなたかお助けいただけないでしょうか。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 こういうことかな? 本来は、定数のURLでなくて、全体をサブルーチンにして、URLを引数にしてあげると、便利です。 Sub TEST_IE() Dim IE As Object Const URL As String = "http://www.post.japanpost.jp/cgi-zip/zipcode.php?zip=1070052" Set IE = CreateObject("InternetExplorer.Application") With IE .Visible = True .Navigate URL Do While .Busy DoEvents Loop Do Until .ReadyState = 4 DoEvents Loop End With Set IE = Nothing End Sub
その他の回答 (6)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 #5 の回答者です。 >Vista+IE7の環境 の場合は、XP+ IE7と違うのは、セキュリティのオプションがIE7に出来ています。 インターネット オプション の中の、セキュリティ[タブ]の下の、 保護モードを有効にするのチェック・ボックスを外せばよかったような気がしますね。
お礼
Wendy02 様 ありがとうございます。 保護モードをはずしたら、みごとOKでした。 完全に制御できました。 余計なウィンドウも表示されず、Inputボックスへの入力もできました。 みなさま、どうもありがとうございました。 感謝申し上げます。
- lark_0925
- ベストアンサー率63% (37/58)
>知識がないもので、もしできましたら、なぜ"3つで囲うのか、 >お教えいただけないでしょうか。 Shell関数のコマンドライン指定って昔の仕様です。 現在のUrlには、認識できない文字が含まれているんです。 ですから、Urlは、ひとくくりのオプション文字列であることを ""ダブルコーテーションでUrlを囲むことで教えてやらなければなりません。 VBAでは、文字列は、 Dim a as string a="abc" Msgbox a というように""で囲むという文法がありますよね!! では、"abc"という"を含めて変数aに入れるには、 文字列を囲む"と区別するために二つ続けて""と指定しなければ なりません(これは、決まりごとです)。 よって、 Dim a as string a="""abc""" msgbox a これを実行すれば、 "abc" と表示されますよね? これが理解できれば、 Shell "explorer.exe " & _ """HTTP://www.post.japanpost.jp/cgi-zip/zipcode.php?zip=1070052""" これの意味も理解いただけるかと思います。
お礼
lark_0925 様 ありがとうございました。 """の意味も大変よく理解できました。 ご親切に感謝しております。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >Vista+IE7でやってみると、接続したIEと、接続できないIEの2つが起動してしまいます。 私のほうは、XP+ IE7 で、Vista ではありませんから、IE7 の問題ではなさそうです。 私には分かりません。ただ、本来は、開くだけなら、Shell で十分だと思います。 「接続したIE」 と「接続できないIE」 というイメージが良く分からないのですが、もし、最初に、IE を起動しているものがあり、それを利用するというなら、 Set IE = CreateObject("InternetExplorer.Application") というコードは違います。WMI で取得したほうがよいです。 IE オブジェクトを使う理由というのは、その後の処理を自動でExcelにインポートするからなのです。ただし、HTML コードを読むという作業が必要になりますが。
お礼
Wendy02 さん ご回答、ありがとうございます。 私のVista+IE7の環境では、 Set IE = CreateObject("InternetExplorer.Application") IE.Visible = True が実行されると、「接続中です」と表示されるけど、ずっとどこにも接続できないIEが起動します。さらに、 IE.Navigate URL を実行すると、URLにちゃんと接続しているIEがさらに起動してしまいます。その後のIE.Busy~ やIE.ReadyState~のIEは、どうやら、 最初の「接続中でも接続できない」やつのようです。 いろいろと、ご親切に教えていただき感謝しております。
- lark_0925
- ベストアンサー率63% (37/58)
私もIE関連は、 Shell "explorer.exe " & _ """HTTP://www.post.japanpost.jp/cgi-zip/zipcode.php?zip=1070052""" これでOKでしたよ!! 表示は、全角ですが、半角で指定してください
お礼
lark_0925 様 ありがとうございます! & _ """ ~ """ でOKでした。感謝! です。 知識がないもので、もしできましたら、なぜ"3つで囲うのか、 お教えいただけないでしょうか。
- wakaranai_kun
- ベストアンサー率45% (5/11)
参考ページ変更です。
お礼
ご回答、ありがとうございました。 XP+IE6で、問題なく動作しました。 感動しました。ありがとうございます。 感謝しております。 ただ、私の環境の問題なのかもしれませんが、Vista+IE7でやってみると、接続したIEと、接続できないIEの2つが起動してしまいます。対応するオブジェクトが、接続できていないほうのIEになって、その後制御できなくなってしまいます。 どなたか、Vista+IE7でやっていらっしゃる方は、いないでしょうか。
- wakaranai_kun
- ベストアンサー率45% (5/11)
Shellだと開くだけでそのIEをリモートコントロールできないと思います。 通常 ↓ のページのような作業をすると 便利です。 phpやcgiのような動的ページでも開けます。
お礼
ご回答、ありがとうございました。 この方法も、XP+IE6で、問題なく動作しました。 ありがとうございます。 皆様に感謝しております。 なお、下でも書かせていただきましたが、私の環境の問題なのかもしれませんが、Vista+IE7でやってみると、後制御できなくなってしまいました。IE7の問題なのでしょうか。 皆様、いろいろな情報を、ありがとうございます。