Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


35734 / 76732 ←次へ | 前へ→

【46193】Re:ダイアログボックスの表示が出るのを待つには
発言  ichinose  - 07/1/26(金) 0:03 -

引用なし
パスワード
   ▼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 さんにして頂くことだと思いますよ!!
1 hits

【46174】ダイアログボックスの表示が出るのを待つには Wz 07/1/25(木) 13:29 質問
【46192】Re:ダイアログボックスの表示が出るのを待... Kein 07/1/25(木) 23:23 発言
【46197】Re:ダイアログボックスの表示が出るのを待... Wz 07/1/26(金) 11:41 お礼
【46198】Re:ダイアログボックスの表示が出るのを待... Kein 07/1/26(金) 12:54 発言
【46202】Re:ダイアログボックスの表示が出るのを待... Wz 07/1/26(金) 14:18 お礼
【46193】Re:ダイアログボックスの表示が出るのを待... ichinose 07/1/26(金) 0:03 発言
【46196】Re:ダイアログボックスの表示が出るのを待... Wz 07/1/26(金) 11:39 お礼

35734 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free