電子書籍の厳選無料作品が豊富!

いつもお世話になっております。
ExcelVBAで、情報を付加したWebページを開こうとしていますが、うまくいかず困っております。
たとえば、Shell "explorer.exe http://www.post.japanpost.jp"
は表示されますが、次は表示されません。
Shell "explorer.exe http://www.post.japanpost.jp/cgi-zip/zipcode.php …
VBAで、このような情報を付加して、ブラウザを起動させるには、どうしたらよろしいでしょうか。
どうか、どなたかお助けいただけないでしょうか。

A 回答 (7件)

こんばんは。



こういうことかな?
本来は、定数のURLでなくて、全体をサブルーチンにして、URLを引数にしてあげると、便利です。

Sub TEST_IE()
Dim IE As Object
Const URL As String = "http://www.post.japanpost.jp/cgi-zip/zipcode.php …
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
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございました。
この方法も、XP+IE6で、問題なく動作しました。
ありがとうございます。
皆様に感謝しております。

なお、下でも書かせていただきましたが、私の環境の問題なのかもしれませんが、Vista+IE7でやってみると、後制御できなくなってしまいました。IE7の問題なのでしょうか。

皆様、いろいろな情報を、ありがとうございます。

お礼日時:2008/02/11 21:48

こんばんは。



#5 の回答者です。

>Vista+IE7の環境

の場合は、XP+ IE7と違うのは、セキュリティのオプションがIE7に出来ています。

インターネット オプション の中の、セキュリティ[タブ]の下の、
保護モードを有効にするのチェック・ボックスを外せばよかったような気がしますね。
    • good
    • 0
この回答へのお礼

Wendy02 様
ありがとうございます。
保護モードをはずしたら、みごとOKでした。
完全に制御できました。
余計なウィンドウも表示されず、Inputボックスへの入力もできました。

みなさま、どうもありがとうございました。
感謝申し上げます。

お礼日時:2008/02/12 21:03

>知識がないもので、もしできましたら、なぜ"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"""

これの意味も理解いただけるかと思います。
    • good
    • 0
この回答へのお礼

lark_0925 様

ありがとうございました。
"""の意味も大変よく理解できました。
ご親切に感謝しております。

お礼日時:2008/02/12 19:10

こんばんは。



>Vista+IE7でやってみると、接続したIEと、接続できないIEの2つが起動してしまいます。

私のほうは、XP+ IE7 で、Vista ではありませんから、IE7 の問題ではなさそうです。
私には分かりません。ただ、本来は、開くだけなら、Shell で十分だと思います。

「接続したIE」 と「接続できないIE」 というイメージが良く分からないのですが、もし、最初に、IE を起動しているものがあり、それを利用するというなら、

Set IE = CreateObject("InternetExplorer.Application")
というコードは違います。WMI で取得したほうがよいです。

IE オブジェクトを使う理由というのは、その後の処理を自動でExcelにインポートするからなのです。ただし、HTML コードを読むという作業が必要になりますが。
    • good
    • 0
この回答へのお礼

Wendy02 さん
ご回答、ありがとうございます。
私のVista+IE7の環境では、
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
が実行されると、「接続中です」と表示されるけど、ずっとどこにも接続できないIEが起動します。さらに、
IE.Navigate URL
を実行すると、URLにちゃんと接続しているIEがさらに起動してしまいます。その後のIE.Busy~ やIE.ReadyState~のIEは、どうやら、
最初の「接続中でも接続できない」やつのようです。

いろいろと、ご親切に教えていただき感謝しております。

お礼日時:2008/02/12 19:17

私もIE関連は、


Shell "explorer.exe " & _
"""HTTP://www.post.japanpost.jp/cgi-zip/zipcode.php?zip=1070052"""

これでOKでしたよ!!
表示は、全角ですが、半角で指定してください
    • good
    • 0
この回答へのお礼

lark_0925 様 ありがとうございます!
& _ """ ~ """
でOKでした。感謝! です。
知識がないもので、もしできましたら、なぜ"3つで囲うのか、
お教えいただけないでしょうか。

お礼日時:2008/02/11 21:21

参考ページ変更です。



参考URL:http://www.ken3.org/cgi-bin/group/vba_ie.asp
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございました。
XP+IE6で、問題なく動作しました。
感動しました。ありがとうございます。
感謝しております。

ただ、私の環境の問題なのかもしれませんが、Vista+IE7でやってみると、接続したIEと、接続できないIEの2つが起動してしまいます。対応するオブジェクトが、接続できていないほうのIEになって、その後制御できなくなってしまいます。
どなたか、Vista+IE7でやっていらっしゃる方は、いないでしょうか。

お礼日時:2008/02/11 21:44

Shellだと開くだけでそのIEをリモートコントロールできないと思います。



通常 ↓ のページのような作業をすると 便利です。

phpやcgiのような動的ページでも開けます。

参考URL:http://www.ken3.org/vba/backno/vba175.html
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!