| 
    
     |  | ▼Wz さん: こんばんは。
 
 >現在ネット上のホームページのボタンを押して、データを保存するマクロを作成しています。
 >
 >このボタンを押した後ですが、データ量が多いため保存のダイアログボックスが出るまで少し時間がかかります。
 >しかもデータ量が毎回一定しないので、ダイアログボックスが出る時間も一定しません。
 >ここで、ダイアログボックスが出るまでマクロを待機させ、出たら再開させるようなことはできるのでしょうか?
 >(IE上のダイアログボックスの表示が出たのを確認できるのかどうか)
 >
 >ちなみに現在はApplication.Waitで長めに設定して待機しています。
 >(しかしこれでは結構な時間待たされてしまいます)
 まず、上記の動作を起こす例としてのHPやダイアログボックスを表示するまでのコードの提示をどうしてされないのですか?
 そこまでのコードの提示が見ている方にとって、参考になるコードかもしれないのに
 ・・・。
 さらに回答投稿が付いた場合、コードがあれば投稿もしやすいし、
 この投稿を見ている方が問題点から解決までの過程を再現することができます。
 
 
 質問者がそういう再現性を怠ると・・・。
 
 
 まず、上記の動作をするHtmの説明からしなくてはなりません。
 (こういうのって、探すとないんですよね!!)
 
 NotePadなどのテキストエディタに以下のコード
 
 <html>
 <head>
 <title>Sample</title>
 <script language="VBScript">
 <!--
 Option Explicit
 Sub inputdata()
 dim indata
 dim idx,jdx
 for idx=1 to 1000000
 next
 indata=Inputbox("input data")
 if indata<>false then
 document.getElementById("dataArea").innerText=indata
 end if
 End Sub
 -->
 </script>
 </head>
 <body>
 <button id="myButton" onclick="inputdata()">ボタン</button>
 <br>
 <br>
 <div id="dataArea">出力エリア</div>
 </body>
 </html>
 
 をコピーして適当なフォルダにsample.htmとして作成してください。
 
 ・実行するとボタンと「出力エリア」というメッセージが表示されます
 ・ボタンをクリックしてください。メッセージを要求するダイアログが表示されます。
 ・適当に文字を入力し、OKボタンをクリックすると、入力した内容が「出力エリア」
 という箇所に上書きされます。
 
 まっ、これだけのことをするhtmです。
 中のVbscriptがネストされていませんが、コピー時のエラーを避けるために敢えて
 しました。おのおのでネストはしてください。
 
 
 Excel側です。
 
 新規ブックにて、VBEにて、参照設定を行います。
 「ツール」---「参照設定」にて、
 「Microsoft HTML Object Library」と
 「Microsoft Internet Controls」にチェックを入れてください。
 
 Thisworkbookのモジュールに
 '==========================================================
 Public WithEvents idoc As HTMLDocument
 '==========================================================
 Private Sub idoc_onfocusout()
 ffg = True
 CreateObject("WScript.Shell").SendKeys "ichinose{ENTER}"
 End Sub
 
 
 標準モジュールに
 '==========================================================
 Public ffg As Boolean
 Dim ie As InternetExplorer
 '==========================================================
 Sub main()
 With ThisWorkbook
 Set ie = CreateObject("InternetExplorer.Application")
 With ie
 .Visible = True
 .navigate ThisWorkbook.Path & "\sample.htm"
 Do While .Busy = True Or .readyState <> 4
 DoEvents
 Loop
 ffg = False
 Set ThisWorkbook.idoc = .document
 On Error Resume Next
 With ThisWorkbook
 .idoc.getElementById("myButton").Click
 Do While ffg = False
 DoEvents
 Loop
 Set .idoc = Nothing
 End With
 CreateObject("WScript.Shell").Popup "確認"
 On Error GoTo 0
 End With
 End With
 ie.Quit
 Set ie = Nothing
 End Sub
 
 
 sample.htmと同じフォルダに保存してください。
 
 
 保存後に、mainを実行してください。
 
 sample.htmを表示後、ボタンをクリックしています。
 Inputbox表示後に「ichinose」と入力しています。
 
 結果を確認してこの方法がWz さんの抱えている問題に対応できるか検討してみてください。
 
 
 というように投稿する私もあまり確信が持てない方法なのにこんなに
 記述しなければなりません。
 本来は、この8割方の記述は、Wz さんにして頂くことだと思いますよ!!
 
 
 |  |