• 締切済み

WebBrowserのダウンロードダイアログ処理

はじめまして。 Excel VBAのWebBrowserを使用して自動ダウンロードを行いたいと考えております。 【内容】 WebBrowserにて対象のWebページを表示し、ボタンをクリック(自動)後にダウンロードダアログの表示まではできたのですが、処理がダイアログを表示させた時点で止まってしまい、DoEventsを入れても(FindWindowなどの後処理まで)進みません。 ダイアログをキャンセルすると処理は進みます。また、IE起動で同じダイアログを表示させ、マクロを動かすと正常にダイアログを認識できます。 WebBrowserではなくマクロでIE起動させれば良いかとは思いますが、疑問が残ったまま進めたくないこともあり、質問させていただきました。 ご存知の方、ご教授戴けないでしょうか。 【環境】 IE8、Excel2000、OS:XP SP3

みんなの回答

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

(多分、お分かりだと思いますが)クリックするコードの前にタイマーをセットして、 > m_timerid = SetTimer(0, 0, 0, AddressOf TimerProc) そしたらダイアログを表示するタイミングでコールバックが呼ばれますので、タイマーを止めて > KillTimer 0, idEvent そこでハンドルをAPIで得ます。

全文を見る
すると、全ての回答が全文表示されます。
  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.1

(IEだと通用しませんが)WebBrowserなら、 SetTimer APIのコールバックでハンドルを得る様にしたらどうですか。FindWindowで。

cj2000
質問者

お礼

ありがとうございます。 >FindWindowで FindWindow処理は組んでいるのですが、それだけではダメということでしょうか? >SetTimer APIのコールバックでハンドルを得る 使ったコトはないのですが、調べて試してみます。 完全に行き詰まっていたため、助かります。 ご回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • WebBrowser でダイアログを自動処理したい

    あるサイト…ぶっちゃけてしまうと、楽天RMS(楽天市場の出店者がアクセスできる、店舗情報の編集サイト)なのですが Visual Basic 2010 でフォーム・アプリケーションを作り、自動アクセスして必要なファイルをダウンロードしてきたい というのがオーダーです。 楽天RMSにはID/PASSのセキュリティが2つかかっています。 アクセスできるブラウザの種類に制限があるようですが、WebBrowser はIEと見なされるのか、接続できました。 http://web.biz-prog.net/index.html を参考に、ID/PASSをセットしたり、submitボタンを押すなどの処理を順番に行うよう記述したところ、概ね希望通りになったのですが、要望のsubmitボタンを押すコードを通過したところで --------- ファイルのダウンロード このタイルを開くか保存しますか? --------- のダイアログがでました。 希望の動作としては、このダイアログの保存のボタンを「押した」処理を送り、保存場所を指定して、ファイルを自動ダウンロードしたいです。 ここから、Visual Basic 2010 WebBrowser ダイアログ 保存 など、Googleってみたのですが、希望のサンプルコードなどを見つける事ができませんでした。 見つけたページを総合すると、ファイルのダウンロードはWebClient.DownloadFileを使用するのが簡単な方法のようです http://dobon.net/vb/dotnet/internet/downloadfile.html しかし、前述の通り、楽天RMSはID/PASSを2種類投入する認証ページを通過する必要があって、WebBrowser でそれを通過してからでないと、ファイルダウンロードのURLに辿り着けません。 WebBrowser でブラウザ上の処理を行った結果、出て来たダイアログボックスを処理する方法がありましたら、教えてください。

  • VBAでのWebダウンロード制御ができない

    Windows7 IE10 の環境でEXCEL VBAからWebのダウンロードボタンを押すところまではできてますが、 通知バーのハンドルを取得できずに困っています。 以下のFindWindowのパラメータが悪いと思うのですが、何を指定すればいいのかわかりません。 ご教授、よろしくお願いします。 Do DoEvents p_lngFindWnd = FindWindow("#32770", "保存") lCntloop = lCntloop + 1      Loop While (p_lngFindWnd = 0 And lCntloop < 10000)

  • ファイルのダウンロードで、ダイアログを出したくない

    Firefox で <input type=submit name=F868 value="注文伝票ダウンロード"> の場所をクリックすると、気持良く何も表示せずに ダウンロードが完了します。 一方、IE(Internet Explorer)では、2つのダイアログボックスが現れます。 1個目は、「ファイルのダウンロード」ダイアログで、   開く(Q)   保存(S)   キャンセル を選択します。(ここで保存を選択します。) 2個目は、「名前を付けて保存」ダイアログで、   デスクトップ に B1307599492-1.html などの名前で「保存」します。 この名前は、自動で表示されます。 IE でも、気持良く何も表示せずにダウンロードが できるようにするには、どうしたら良いのでしょうか?

  • ExcelにWebBrowserコントロールを貼り付けるとシート切り替えで落ちる

    いつもお世話になっています。 さて、タイトルどおりなのですが、エクセルのシート1にWebBrowserコントロールを貼り付け、 シート1のマクロに Private Sub Worksheet_Activate()  WebBrowser1.Navigate "http://www.yahoo.co.jp/" End Sub と貼り付けます。 そしていったん保存して終了後、マクロを有効にしてファイルを開き、シート1←→シート2の作業を何度か行うと、 「問題が発生したため、Microsoft Excel を終了します。 ご不便をおかけして申し訳ありません。」 のダイアログとともにエクセルがエラー終了してしまいます。 これはエクセルの不具合(IEコンポーネントの不具合)で解決策はないのでしょうか? どなたか解決方法をご存知の方、お知恵をお貸しください。 OSはXP、オフィスは2002SP3を使用しています。

  • WebBrowserでGmailに自動ログイン

    Excel2002VBAにて、WebBrowserでGmailに自動ログインするコードを書いたのですが 実行してGmailにログインはできるのですが、添付画像のダイアログが出てきてしまいます。 はいを押してもいいえを押しても、消した瞬間にすぐに出てきて困っています。 同じような現象の方はいませんでしょうか? またこのエラーの回避の仕方はどうしたら良いでしょうか? ログイン後の画面では何か処理をするようなコードは書いていません。 ちなみにログインするまでのコードは以下です。 Private Sub WebBrowser1_Documentcomplete(ByVal pDisp As Object, URL As Variant) 'Yahooメールなどにログインする処理 ElseIf i = 4 And URL = "https://www.google.com/accounts/Login?hl=ja&cont … Then i = i + 1 WebBrowser1.Document.getElementsByName("Email")(0).Value = "メールアドレス" WebBrowser1.Document.getElementsByName("Passwd")(0).Value = "パスワード" WebBrowser1.Document.getElementsByName("signIn")(0).Click End Sub よろしくお願いします。

  • 処理をとめるキャンセルボタンのあるダイアログ作成

    開始ボタンを押すと、 ”保存しています。とめたい場合はキャンセルしてください” と言ったようなダイアログにキャンセルボタンがついたダイアログを 表示し(表示中に処理は行われていく)、処理をキャンセルさせたいのですが、 Showで表示させると、キャンセルボタンが反応せず、 ShowModalを使用すると表示と同時に処理が止まってしまい、 ボタンを押さない限り処理が進まずにいます。 何かよい方法はないでしょうか? よろしくおねがいします

  • WebBrowserの読み込み待ちの処理の仕方

    VB2005にてプログラムしております。 WebBrowser内にて表示したページでID、PASSを自動入力、ログインするというプログラムですが、 -------------------------------------------------------------     Dim IDCODE As String = TextBox1.Text Dim PASSCODE As String = TextBox2.Text '文字列で指定したURLに飛ぶ WebBrowser1.Navigate("https://XXXXXXXXX.ne.jp/") '表示終了まで待つ ??????    ‘WebBrowser1へID、PASS入力処理 ------------------------------------------------------------- 上記の ?????? 部分に表示待ちの処理をするコードを入れると思うのですが、 With WebBrowser1 Do While .IsBusy = True Loop Do While .ReadyState <> "complete" Loop End With を入力すると読み込み途中で止まってしまうみたいです。 なにかいい方法がありますか?

  • webbrowserの読込完了が反応しない

    何度も質問してすみません。 どうしても自力では解決できないことがありましたので質問させていただきます。 webbrowserでの読み込み後の処理についてなのですが、現在表示されているページ内のリンクを自動でクリックし、次のページにあるテキストボックス内にテキストを打ち込みたいのです。 While WebBrowser1.IsBusy Or WebBrowser1.ReadyState <> WebBrowserReadyState.Complete  Application.DoEvents() End While を置いているのですが、どうやらこれが機能せずにテキストボックスへの書き込みがうまくいきません。 試しに、上記の記載の後ろに msgbox("待ってみる") と記載してみると、前ページのリンクをクリックした瞬間、メッセージボックスが表示されます。 メッセージボックスのOKボタンをしばらく待って手動でOKをクリックするとテキストボックスへのテキストの書き込みも正常に行われます。 ほかには Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete System.Windows.Forms.Application.DoEvents() Loop や System.Threading.Thread.Sleep(1000) も試してみたのですが、sleepに関してはwebbrowserの読込自体が止まってしまいます。 何か良い方法はないのでしょうか? よろしくお願いいたします。

  • .NetのWebBrowserについて

    【環境】 WindowsXp VisualStudio2005 Excel2003 VB.netでWebBrowserを使ってフォームにExcelを表示するアプリがあります。 ある日突然特定の端末でExcelがそのアプリで表示できなくなりました。 ・現在分かっていること (1)他の端末は問題なく使えています。 (2)アプリは修正・等は一切していません(昔に作ったまま) (3)Wordなどは表示できてます (4)Excelのマクロの有無は関係ないと思います(あるものでもないものでも発生しました) (5)Excelを開く際にダイアログが出て開くか保存するか?を聞いてくるので、   ファイルパス間違いとかそういった問題ではありません。 特定端末(1台)だけなので、 その端末の設定的なものだろうと思うのですが、 その端末を使っている人も特になにか変えたつもりがないということで、 原因が分かっておりません。 ソースは、抜粋ですが、 フォームに張り付けたWebBrowserコンポーネントのNavigateに 引数でExcelファイルを指定しているだけのシンプルなものです。 ------------------------------------ Me.WebBrowser1.Navigate(strFileName) ------------------------------------ どなたか、なにか原因について心当たりがある方いらっしゃいましたら、 ご教授ください。

  • WebBrowserにてCSVを取得したい

    WebBrowserにてCSVを取得したい vb.net(VS2008) にて、WebBrowserを利用して指定のURLからCSVをダウンロードしたいのですが、ダウンロードするダイアログまたはエクセルがWebBrowser内に表示されてしまいます。 単純に、WebBrowserに表示して、DocumentCompleted 時にDocumentとして取得したいのです。 もしくは、ファイル名を予め指定してダウンロードでも問題ありません HttpWebRequest,WebClientによる取得は、 SSLクライアント認証などの公開キーに基づく認証方式が必要なサイトのため、できませんでした。 ダイアログ、エクセルが起動せずに取得出来る方法がありましたら、教えていただけないでしょうか? よろしくお願いします。